Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann man verschachtelte Array-Werte mithilfe eines String-Pfads in PHP sicher festlegen?

Wie kann man verschachtelte Array-Werte mithilfe eines String-Pfads in PHP sicher festlegen?

DDD
Freigeben: 2024-12-15 06:40:11
Original
765 Leute haben es durchsucht

How to Safely Set Nested Array Values Using a String Path in PHP?

Festlegen verschachtelter Array-Daten mithilfe eines String-Pfads

In diesem Anwendungsfall zielt eine String-Eingabe darauf ab, einen verschachtelten Array-Wert festzulegen. Zum Beispiel:

"cars.honda.civic = On"

Diese Zeichenfolge sollte Folgendes ergeben:

$data'cars'['civic'] = 'On' ;

Während der Tokenisierung ist die Eingabe unkompliziert:

$token = explosion("=",$input);
$value = trim($token[1]);
$path = trim($token[0]);
$exploded_path = explosion(". ",$path);

Die Herausforderung besteht darin, das Array festzulegen, ohne auf riskante Techniken wie z. B. zurückzugreifen eval.

Lösung

Eine Lösung besteht darin, den Referenzoperator (&) zu verwenden, um aufeinanderfolgende vorhandene Arrays zu erhalten:

$temp = & $data;
foreach($exploded as $key) {

$temp = & $temp[$key];
Nach dem Login kopieren

}
$temp = $value;
unset($temp);

Mit dieser Methode können Sie durch verschachtelte Arrays navigieren, ohne jede Ebene fest zu codieren .

Das obige ist der detaillierte Inhalt vonWie kann man verschachtelte Array-Werte mithilfe eines String-Pfads in PHP sicher festlegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage