[php] De naam van een variabele bemachtigen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cor-gijs
  • Registratie: Maart 2000
  • Laatst online: 24-07 10:09

cor-gijs

Dig further for bigger hole

Topicstarter
Is het mogelijk om de naam van een meegeven variabele te bemachtigen?

Voorbeeld:
De simpele manier is gewoon handmatig mee geven:
PHP:
1
2
3
4
5
6
7
8
9
<?php
function Build($var, $namevar, $type){
  echo $var;   // leuk tekstje
  echo $namevar;  //dracula
  echo $type;  //tekst
}
$dracula = "leuk tekstje";
Build($dracula, "dracula", "tekst");
?>

Nu moet de functie dus de naam te voorschijn kunnen halen van $dracula die is meegegeven.
Zie hieronder:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
function Build($var, $type){
  $namevar = script om de naam te krijgen van $var;
  echo $var;   // leuk tekstje
  echo $namevar;  //dracula
  echo $type;  //tekst
}
$dracula = "leuk tekstje";
Build($dracula, "tekst");
?>

There is no adequate defense, except stupidity, against the impact of a new idea.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Kanniet.

Als je perse namen aan teksten wilt koppelen kan je beter met array's werken:
PHP:
1
2
3
4
5
6
7
8
9
10
function Build($input=array())
{
  foreach($array as $name => $var)
  {
    echo $name . " = " . $var[0] . ", " . $var[1];  
  }
}

$input = array('dracula' => array("leuk tekstje", "tekstje");
Build($input);


Maar ik zie eigenlijk niet waarom je dat uberhaupt nodig zou hebben, je kan toch net zo goed dan:
Build('dracula', 'tekstje', 'leuk tekstje'); opgeven :?

Acties:
  • 0 Henk 'm!

  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 15-09 17:06
Nee, ik geloof van niet nee :).

Stomme ACM ;)

[ Voor 32% gewijzigd door coubertin119 op 15-10-2003 16:15 ]

Skat! Skat! Skat!


Acties:
  • 0 Henk 'm!

Verwijderd

Zou je ons messchien het moto hier achter duidelijk kunnen maken. Je kunt het idd met een array doen, maar ik denk dat we je beter kunnen helpen met je doelstelling van je vraag.

Acties:
  • 0 Henk 'm!

  • cor-gijs
  • Registratie: Maart 2000
  • Laatst online: 24-07 10:09

cor-gijs

Dig further for bigger hole

Topicstarter
Het doel was eigenlijk om een script, dat postings nakijkt, iets korter te maken.
De functie maakt deel uit van de volgende class:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
class ClassPostCheck {
  function BuildError($var, $name, $type){
    switch ($type) {
    case "text":
      // checken of het tekst is
    break;
    }
  }
}
$PostCheck = new ClassPostCheck;
$PostCheck->BuildError($HTTP_POST_VARS['titel'], "titel", "text");
$PostCheck->BuildError($HTTP_POST_VARS['postcode'], "1234ab", "postcode");
echo $PostCheck->Errorresult;

There is no adequate defense, except stupidity, against the impact of a new idea.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Dan heb je toch de naam van de variabel toch niet nodig of kijk ik nu ergens overheen :?

En wat doet die '1234ab' daar in plaats van 'postcode' als naam? Dat lijkt meer op een waarde dan de naam.

Edit:

Oh ja, en je kunt toch iets als dit doen:
PHP:
1
2
3
4
5
6
7
8
9
10
function BuildError($var, $type)
{
    echo $var;
    echo $HTTP_POST_VARS[$var];  // $_POST[$var];
    echo $type;
}

$var = "titel";

BuildError($var, "text");

[ Voor 41% gewijzigd door Michali op 15-10-2003 18:32 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Ik heb hier ook over zitten nadenken omdat ik het gebruikte binnen sessies. Ik heb het opgelost door de functie aan te spreken met bv:
PHP:
1
set_bla(array('bla' => $bla));

Wellicht heb je hier iets aan.

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 17-09 14:46

TheDane

1.618

wa kan nie?

kan wel :P

PHP:
1
2
3
4
5
6
7
8
9
10
<?
$bral = "bla";
$arr = get_defined_vars();
while (list($key, $value) = each ($arr)) {
    if (!is_array($value)) {
        echo $key." = ".$value."<br>";
    }
}

?>

[/ranzig]

output:
bral = bla
(nee, hier heb je verder -praktisch gezien- inderdaad niet veel aan :+)

[ Voor 22% gewijzigd door TheDane op 15-10-2003 20:43 ]


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
bit-slave schreef op 15 October 2003 @ 16:34:
PHP:
1
2
3
 /* knip */
$PostCheck->BuildError($HTTP_POST_VARS['titel'], "titel", "text");
$PostCheck->BuildError($HTTP_POST_VARS['postcode'], "1234ab", "postcode");
Je weet dat we inmiddels al weer een flinke tijd met superglobals werken?
TheDane schreef op 15 October 2003 @ 20:42:
wa kan nie?

kan wel :P

PHP:
1
2
3
4
5
6
7
8
9
10
<?
$bral = "bla";
$arr = get_defined_vars();
while (list($key, $value) = each ($arr)) {
    if (!is_array($value)) {
        echo $key." = ".$value."<br>";
    }
}

?>

[/ranzig]

output:

[...]

(nee, hier heb je verder -praktisch gezien- inderdaad niet veel aan :+)
Je had er zowiezo niets aan gehad omdat als je get_defined_vars(); binnen een functie gebruikt je alleen de variabelen ziet die binnen die lokale scoop vallen ;)

Acties:
  • 0 Henk 'm!

  • mjax
  • Registratie: September 2000
  • Laatst online: 13:28
In een lokale scope kun je met $$var de naam van een variabele ophalen. Echter, in de scope van de functie, zul je dan de naam van de parameter (designtime) doorkrijgen en niet van de runtime doorgegeven variabele.
Pagina: 1