[php] (speciale) functie aanroep

Pagina: 1
Acties:
  • 217 views sinds 30-01-2008
  • Reageer

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Ik heb de volgende functie:

PHP:
1
2
3
4
5
6
7
8
9
function blaat($array)
{
  list($key, $value) = each($array);
  echo "key: $key<br>\n";
  echo "value: $value<br>\n";
}

$bla = 25;
blaat(array(bla => $bla));

Deze resulteert in:
key: bla
value: 25

Dat is dus goed.

Maar nu wil ik de aanroep van die functie makkelijker maken, dat 'm gewoon kan aanroepen met
PHP:
1
2
3
blaat("bla");
//of:
blaat($bla);

Hier kom ik echter niet uit. Ik krijg het niet voor elkaar om dan ervoor te zorgen dat ik én de key én de value binnen krijg. Geprobeerd met $bla en $$bla, ook met &$bla en nog een aantal mogelijkheden.

Ik heb het idee dat de truc in passing of calling by reference zit, maar dat blijft nogal wazig voor mij op dit moment.

Ik hoop dat iemand mij kan helpen hiermee (-:

Ook Knor is aangestoken met het ligfietsvirus!


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Niet echt netjes hoor....

maarhe...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function blaat($array)
{
if (!is_array($array)) 
   $array=(array) $array;

  list($key, $value) = each($array);
  echo "key: $key<br>\n";
  echo "value: $value<br>\n";
}

$bla = 25;
blaat(array(bla => $bla));

Programmer - an organism that turns coffee into software.


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
LuCarD:
Dit resulteert ook niet in wat ik bedoel. Je roept nog steeds de functie aan met blaat(array(bla => $bla)); wat dus niet de bedoeling is (misschien foutje gemaakt met tiepen? (-: )

Maar als ik de functie nu pak en aanroep met

PHP:
1
2
blaat("bla");
blaat($bla);

Krijg ik:
key: 0
value: bla
key: 0
value: 25

Ook Knor is aangestoken met het ligfietsvirus!


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
je moet 'm eerst globallen en dan $$var doen.

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Nielsz schreef op 29 oktober 2002 @ 15:40:
je moet 'm eerst globallen en dan $$var doen.
Dacht ik ook, maar dat werkt dus niet. Zoiets als dit:
PHP:
1
2
3
4
5
6
function blaat($var)
{
  global ${"$var"};
  echo "\$var: $var<br>\n";
  echo "\$\$var: $$var<br>\n";
}

Werkt dus niet...

Ook Knor is aangestoken met het ligfietsvirus!


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Weet je zeker dat je dit wilt?


het is heeeeel erg vies....


maar hier

PHP:
1
2
3
4
5
6
function blaat($var) {
    echo $GLOBALS[$var];
}

$test="12";
blaat("test");

Programmer - an organism that turns coffee into software.


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
input:
PHP:
1
2
$var="joehoe!";
echo blaat("var");


output:
PHP:
1
2
$var: joehoe!
$$var: $joehoe!

werkt toch?

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
LuCarD, dat van jou werkt. Als het inderdaad echt vies is, is het misschien toch maar beter op de oude versie van mij te blijven. Toch vreemd dat het niet zo maar kan.

Nielsz, bak zelf die code maar eens, dan zie je dat het niet werkt.

Ook Knor is aangestoken met het ligfietsvirus!


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
nou dat heb ik net geprobeerd 8)7

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

* drm snapt echt het nut van dit topic niet, eerlijk gezegd :)

Wat is er mis met een good-old-fashioned functie-aanroep, waarbij je gewoon de parameters meegeeft aan de functie die de functie nodig heeft :? :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Nielsz, paste dan de exacte code (in een functie) met declaratie van de variabele, de functie aanroep en de output.

drm, het gaat erom dat ik ergens de naam en waarde van een variabele wil vastleggen.

Ook Knor is aangestoken met het ligfietsvirus!


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
@drm:
In Smarty kan je variabelen gebruiken. Dan zeg je : {$var} en dan geeft hij 'm weer. ( 8)7 ). Maar dat moet je op deze manier doen:
$smarty->assign("var",$var);
Sneller zou zijn om gewoon $smarty->assign("var"); te doen.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Veel logischer om dan gewoon een array mee te geven zoals in de openingspost staat.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Nielsz schreef op 29 oktober 2002 @ 16:28:
@drm:
In Smarty kan je variabelen gebruiken. Dan zeg je : {$var} en dan geeft hij 'm weer. ( 8)7 ). Maar dat moet je op deze manier doen:
$smarty->assign("var",$var);
Sneller zou zijn om gewoon $smarty->assign("var"); te doen.
tja... dat kan...

maar je kan het natuurlijk ook anders doen...

PHP:
1
2
3
4
5
6
7
8
9
10
11
require '../inc/smarty/Smarty.class.php';
$smarty = new Smarty;
$smarty->global_assign=array("test"); // <-- Alle variablen die wilt hebben! 
//
// Jouw code
//
$smarty->smarty(); // Nogmaals constructor draaien om alle global assigned variablen te pakken.
// Hij schrijft over alle variablen heen die de zelfde naam hebben. Alle anderen laat hij met rust!
//
// 
$smarty->display('jouw_template.tpl');

Programmer - an organism that turns coffee into software.


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
zo leer je nog eens wat :)
Pagina: 1