Dynamische Variable geht nicht

TJ22

Grünschnabel
Hi!

ich bin gerade eben auf dieses Problem gestoßen:

Code:
$i_f = 'isle' . $active_isle;
print_r($$i_f);
echo $$i_f[a_jb];

Variable $active_isle = 1.
Das Array $isle1 gibts auch, und der Wert vom Schlüssel "a_jb" = 54.

print_r gibt schon richtig das ganze Array zurück, aber echo einen völlig anderen Wert...

Wie kommt das?


THX, Tj.
 
Weil dort dann "i" als Parse Output kommt.

Ich schreib mein Prob nochmal im Klartext:

Parse Input:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<!-- Creation Date: <?=Date("d/m/Y")?> -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document Title</title>
</head>
<body>
<?php
$isle1 = array(
  "a_jb" => "76"
);
$active_isle = 1;
$i_f = 'isle' . $active_isle;
print_r($$i_f);
echo $$i_f["a_jb"];
?>
</body>
</html>


Parse Output:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<!-- Creation Date: 21/10/2005 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document Title</title>
</head>
<body>
Array
(
    [a_jb] => 76
)
</body>
</html>

Wo ist da der Fehler?


Gruß, TJ.
 
Zitat php-Manual:
Wenn Sie variable Variablen mit Arrays verwenden, müssen Sie eine Doppeldeutigkeit beachten. Wenn Sie nämlich $$a[1] schreiben, dann muss der Parser wissen, ob Sie $a[1] als Variable oder $$a als Variable und dann [1] als Index dieser Variablen verwenden wollen bzw. gemeint haben. Die Syntax zur Lösung dieser Doppeldeutigkeit: Verwenden Sie im ersten Fall ${$a[1]} und im zweiten Fall ${$a}[1].
http://de3.php.net/manual/de/language.variables.variable.php

Wobei ich nicht verstehe warum das ausgerechnet eine VarVar sein muss. Hier im Forum waren schon öffter Debatten darüber, mit Einwänden, dass eine Fehlersuche dadurch fast unmöglich wird und dass die Gefahr von Sicherheitslücken besteht.

Was spricht denn gegen folgende Möglichkeit?
PHP:
$isle[$active_isle] = array(
  "a_jb" => "76"
);
 
Zurück