2017-08-29 2 views
0

Ich habe Probleme beim Abrufen meiner Array-Inhalt, wenn eine deklarierte Variable als meine Array-Indizes unten angezeigt wird.PHP-Array-Index mit Variable

$indexes = "[0][1][0][1]"; 
$code = $params["smv_code"].$indexes; 

Dies liefert ein "Array zu bespannen Umwandlungsfehler";

Beachten Sie, dass die $ indexes dynamisch ist, abhängig vom params-Inhalt des Array-Indexes "parent_0_1_0_1".

+0

das ist sehr unklar, was genau versuchen Sie zu tun, und was denken Sie sollten Ihren Code tun? – ElefantPhace

+0

Es ist sehr klar, was er tun will - er versucht, durch die Code-Notation durch das multidimensionale Array zu navigieren. – PressingOnAlways

+0

außer er ist nicht ... welchen Wert sucht er eigentlich? der Wert von 'parent_0_1_0_1' oder der Wert von' $ params ['smv_code'] [0] [1] [0] [1] ' – ElefantPhace

Antwort

1

der . Operator tut einfach eine - es wird nicht für Code wie das funktionieren. Ich glaube nicht, dass PHP die Fähigkeit hat, Rohcode so zu interpretieren - zumindest nicht sicher. (Sie können immer eval verwenden, aber es gibt ernsthafte Sicherheitsbedenken, wenn Sie so etwas verwenden - Injektion usw.).

Ich würde vorschlagen, nur das Array "manuell" durch die Interpretation der Indizes selbst durchlaufen. Ändern Sie den $indexes zu "0,1,0,1" und wie folgt vorgehen:

$index_array = explode(',',$indexes) 
$code = $params["smv_code"]; 
foreach($index_array as $i) { 
    $code=$code[$i]; 
} 

$code am Ende sollte der Wert sein, den Sie suchen.

+0

das löst meine Problem, möchte nur fragen, ob es versucht, die Parameter zu (Objekt) zu werfen und die $ Indizes "-> 0-> 1-> 0-> 1" und versucht dies eine $ params-> smv_code {$ Indizes} wird das ist möglich? –

+0

Nein, PHP ist nicht so dynamisch. Es tut uns leid. Wie bereits erwähnt, ist der einzige Weg (so weit ich weiß) die 'eval()' Funktion wie der im Kommentar gepostete Wizard zu benutzen ... aber dann kannst du dich für Exploits öffnen, wenn sie den Param korrekt ausführen können anderer Code. – PressingOnAlways