PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablenbezeichner mit $$ - warum nicht in der foreach-schleife


mra
07.02.2002, 22:06:44
Wie allgemein bekannt ist funktioniert folgendes Konstrukt einwandfrei:
$a = "Gute";
$$a = "Nacht";
$a = "Hallo";
$$a = "Welt";

echo $Gute; echo $Hallo;

Die Ausgabe lautet "Nacht Welt"


Ich möchte genau auf diese Art die Parameter aus einer suche auslesen:

foreach ($my_suche as $row) {
list($was,$wert) = $row;
$a = "$was";
$$a = "$wert";

<tr><td><?=$a?></td><td><?=$$a?></td></tr>
}

Eine Zeile in den Datensätzen heisst haus. Diese Entität kommt in den Daten exakt ein Mal vor.

Leider kommt auf die Ausgabe <?=$haus?> nicht der dazu passende Wert - die Ausgabe ist leer.

Wer weiss woran das liegen kann.

Grüße aus Frankfurt

Damir
08.02.2002, 07:24:20
Hi,
dynamische Variablen kann man auch in foreach Schleifen nuten.
Gerade aber bei dynamische Variablen innerhalb von Arrays kann es zu Zuordnungsprobleme fuehren, da der PHP-Interpreter nicht immer herausfinden kann, auf welches Konstrukt sich der Indiz bezieht. In solchen Faellen sollte man sie so aufbauen:
${$wert[0]}.
Zu Deinem Problem ;-)
Baue deine Schleife besser mit each auf:

<?PHP
$my_suche[ich] = 'birne';
$my_suche[du] = 'apfel';
$my_suche[er] = 'haus';
$my_suche[sie] = 'banane';
$my_suche[es] = 'weintraube';

echo '<table>';
foreach ($my_suche as $row) {
$row = each($my_suche);
$a = $row["key"];
$$a = $row["value"];
?>
<tr><td><?=$a?></td><td><?=$$a?></td></tr>
<?PHP
}
echo '</table>';
?>

Bye Damir

P.S. Ich weiss nicht genau, ob der Datenaufbau Deinem entspricht.
Du kannst natuerlich auch value anstatt key nehmen und hast so Dein $haus.

mra
08.02.2002, 10:06:13
Wieviele dieser Wertepaare kann PHP anlegen - Bei 5 oder 6 scheint das kein wirkliches Problem darzustellen - 120 sind - so wie's in meinem Testprogramm aussieht ummöglich...

Danke für Deine Hilfe,

Micha

Damir
08.02.2002, 10:12:16
Hi,
mir ist kein Limit bekannt - das Problem wird wohl immer der Interpreter darstellen bzw. der Aufbau der dynamischen Variablen.
Leider weiss ich nicht wie Du es machst.
Bye Damir