Toon posts:

[PHP] Naam van var(input functie) achterhalen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een functie:

function test($array){

}

Ik roep aan:

test($inputArray);

Kan mijn functie nu op de een of andere manier de naam inputArray herkennen:

function test($array){

echo naamVanInputVar;
}

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
www.php.net/manual/

:?

Misschien eerst eens verdiepen in de syntax :Z

===

Maar het antwoord is:
code:
1
2
3
4
function bla($eentweedrie)
{
  echo $eentweedrie;
}

Aanroepen:
code:
1
bla("BASISCUSRUS php");

Dit print:
code:
1
BASISCURSUS php

Verwijderd

Topicstarter
De input voor de functie is de variabele naam van een array
dus bijvoorbeeld:
$myArray = '1','2','3';

myFunction($myArray);

Nu moet de functie de naam van de input variabele herkennen. Niet de waarde van de variabele. Dus moet de functie kunnen echoen 'myArra'

De als je simpelweg de parameter van de functie echoed dan krijg je Array te zien, en dat wil ik niet.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
Wat jij wilt kan volgens mij niet, en waarom zou je dat willen. Feit dat je dit wilt geeft al aan dat je brakke code schrijft.

Sjongejonge, wat is in godsnaam het doel hiervan?

Verwijderd

Topicstarter
De functie moet automatisch een formulier genereren waarin de input velden staan gedefineerd in de array. De 'name' van deze input velden moet gelijk zijn aan de de naam van de inputarray + de veldnaam Dus bijvoorbeeld
$myArray_naam; en
$myArray_achternaam;

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
Gebruik dan een array zoals je wilt.
code:
1
2
3
4
5
6
7
function testje($array)
{
  while(list($c, $v) = each($array))
  {
    echo $c.":".$v;
  }
}


code:
1
2
$array = array("naam" => "Piet", "achternaam" => "Jansen");
testje($array);

Print:
code:
1
2
naam:Piet
achternaam:Jansen

Verwijderd

Topicstarter
In jouw voorbeeld wil ik dus kunnen echoen;

$array_achternaam

NIET DE INHOUD VAN DE VARIABELE

Verwijderd

Topicstarter
Het volgens mij zo kunnen.

Mijn array met waardes heet $myArray

Ik roep de functie aan als
myFunction("myArray");

De functie is:

function myFunction($array){
echo $$array; // is gelijk aan echo $myArray, en tegelijkertijd weet ik dat mijn variabele dus $array heet. dus de ingevoerde string.


}

Ik weet het, het ius allemaal erg krom maar dat doet er niet toe. Ik wil de naam van de input array hebben als variabele op mijn form. Dit kan op een rare manier zoals waarover we nu discussieren of op een andere manier. Namelijk een function met twee parameters, een met de array en een met de array naam, maar dat wil ik niet.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
In principe verander je een functie niet steeds, en dus weet je wat er naartoe wordt gestuurd in welke variabele.

Daarom is het ook zo ENORM STOM |:(

Verwijderd

Topicstarter
Nevermind, je bent te kortzichting.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
Kijk trouwens hier eens:

http://www.php.net/manual/nl/ref.funchand.php

Dus ook al die functies die daarbij horen, volgens mij kun je daar wel iets mee, in combinatie met array functions.

  • Stewie!
  • Registratie: September 2001
  • Laatst online: 22:05

Stewie!

Keen must die!

Op dinsdag 30 april 2002 09:17 schreef lisson01 het volgende:
Nevermind, je bent te kortzichting.
dat is ie inderdaad
ik weet niet hoe je dit kan doen, omdat je als je test($var) uitvoert, alleen de waarden van $var doorgeeft en voor de rest niks


Strava: https://www.strava.com/athletes/149347154


Verwijderd

Topicstarter
Ik heb het als volgt gedaan.

$myArray = '1','2','3';

myFunction("myArray"); // string ipv var.

function myFunction($arrayName){

global $$arrayname;
echo ${$arrayname}[1]; //echo item 1

}

Nu heb ik dus de naam doorgestuurd, en heb ik gelijk toegang tot de array.

  • Stewie!
  • Registratie: September 2001
  • Laatst online: 22:05

Stewie!

Keen must die!

Op dinsdag 30 april 2002 09:31 schreef lisson01 het volgende:
Ik heb het als volgt gedaan.
blabla
}

Nu heb ik dus de naam doorgestuurd, en heb ik gelijk toegang tot de array.
handig!


Strava: https://www.strava.com/athletes/149347154


Verwijderd

Jemig je kan gewoon escapen hoor ( \ )

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

Mag ik weten voor wat voor doeleinden je deze functie nou precies nodig hebt? Deze oplossing is namelijk niet echt netjes. En er zullen veel betere/mooiere oplossingen zijn! :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
Ik moet een database van ongeveel 53 tabellen met in elke tabel wel 3 keuzelijsten ombouwen voor het web. Al deze keuzelijsten staan in een bestand als array's gedefineerd. Nu moet met behulp van een functie, heel eenvoudig een dropdown voor een form kunnen worden gegenereerd.
De 'name' van de select moet automatisch de veldnaam zijn. Als de veldnaam gedeclareerd is moet hij automatisch selected zijn.
Dus als invoer geef ik een array met bijvoorbeeld de naam
$ar_Object;
de select wordt automatisch
$fld_Object;
de 'selected' wordt bepaald aan de hand van de waarde van het veld $Object;
Vandaar dat ik in de parameter v/d functie de arraynaam moet kunnen vinden zodat de overige variabele worden aangemaakt.

Als je een beter idee hebt hoor ik het graag :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 30 april 2002 10:32 schreef lisson01 het volgende:
Als je een beter idee hebt hoor ik het graag :)
Jouw oplossing zou ik ten allen tijden proberen te voorkomen, global is vies. Maar om nou een variabele variabele global te gebruiken komt je array absoluut niet ten goede.

Verder is het compleet zinloos om de naam van je array te weten, zeker in jouw eigen voorbeeld!

De oplossing van ddc is, imho, veel netter en nog flexibeler ook.
Op dinsdag 30 april 2002 08:25 schreef ddc het volgende:
code:
1
2
$array = array("naam" => "Piet", "achternaam" => "Jansen");
testje($array);
Als bovenstaande niet de oplossing is, zou ik eerst es naar het ontwerp van je functie terug gaan. Aangezien een functie (normaliter) absoluut niet hoeft te weten wat de naam van de variabele was die er binnenkwam. Ik kan me iig geen enkele reden voorstellen, zelfs de jouwe niet.

In jouw geval kan je waarsch. beter de boel aanmaken als:
PHP:
1
<?$selects = array("selectienaam1" => array("selectiewaarden"),                 "selectienaam2" => array("selectiewaarden"));?>

En hier zijn wel wat varianten op te bedenken die al dan niet beter voldoen aan je eisen.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op dinsdag 30 april 2002 09:31 schreef lisson01 het volgende:
Ik heb het als volgt gedaan.

$myArray = '1','2','3';

myFunction("myArray"); // string ipv var.

function myFunction($arrayName){

global $$arrayname;
echo ${$arrayname}[1]; //echo item 1

}

Nu heb ik dus de naam doorgestuurd, en heb ik gelijk toegang tot de array.
Ermmmm.... Hmm dit kan netter...

try this
PHP:
1
<?function test(&amp;$i) {   echo $i;   $i++;}$blaat=0;test($blaat); // PRINT BLAAT en VERHOOG BLAAT met 1test($blaat);test($blaat);test($blaat);test($blaat);echo "<BR />";echo $blaat;?>

Programmer - an organism that turns coffee into software.

Pagina: 1