Heim >Backend-Entwicklung >PHP-Tutorial >Wie aktualisiere ich verschachtelte Array-Daten sicher mithilfe eines String-Pfads in PHP?

Wie aktualisiere ich verschachtelte Array-Daten sicher mithilfe eines String-Pfads in PHP?

Barbara Streisand
Barbara StreisandOriginal
2024-12-18 02:59:10445Durchsuche

How to Safely Update Nested Array Data Using a String Path in PHP?

Zugriff auf verschachtelte Array-Daten mit einem String-Pfad

Angenommen, Sie haben einen Kunden, der eine Zeichenfolge eingibt, die einem bestimmten Format folgt, beispielsweise „Autos“. .honda.civic = Ein". Das Ziel besteht darin, diese Zeichenfolge zu verwenden, um ein verschachteltes Array auf folgende Weise zu aktualisieren:

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

Zunächst verwenden Sie die Explosionsfunktion, um die Eingabezeichenfolge zu tokenisieren:

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

Jetzt Um die Array-Elemente festzulegen, ohne auf unsichere Methoden wie eval angewiesen zu sein, verwenden Sie den Referenzoperator (&). Der &-Operator stellt einen Verweis auf die Variable bereit, sodass Sie ihren Wert direkt ändern können.

$temp = &$data;
foreach ($exploded_path as $key) {
    $temp = &$temp[$key];
}
$temp = $value;
unset($temp);

Im Wesentlichen fungiert $temp als Zeiger auf die aktuelle Ebene des Arrays. Die Schleife durchläuft die im Zeichenfolgenpfad angegebenen Elemente und erstellt oder ruft nach und nach die erforderlichen Arrays ab. Schließlich wird der Wert festgelegt und unset($temp) entfernt den Verweis auf das verschachtelte Element.

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

Stellungnahme:
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