In PHP gibt es zwei Strategien zum Array-Kopieren: tiefes Kopieren und flaches Kopieren. Eine tiefe Kopie erstellt eine unabhängige Kopie des Quellarrays und Änderungen an einem Array haben keine Auswirkungen auf das andere Array. Beim flachen Kopieren werden nur die Referenzen der Arrays kopiert. Änderungen an einem der Arrays werden im anderen Array widergespiegelt. Deep Copy erfordert das Durchlaufen des Arrays und das Erstellen neuer Entitäten und ist daher ressourcenintensiver als flaches Kopieren. Flaches Kopieren kann jedoch nur Referenzen kopieren und ist daher schneller. Deep Copy wird verwendet, um eine unabhängige Sammlung von Datenbankeinträgen zu erstellen, während flache Kopie verwendet wird, um ein Array an eine Funktion zu übergeben.
In PHP werden Array-Variablen als Referenz übergeben. Dies bedeutet, dass alle am ursprünglichen Array vorgenommenen Änderungen in allen Variablen widergespiegelt werden, die auf das Array verweisen. Wenn wir jedoch Kopien von Arrays erstellen müssen, um unabhängige Änderungen daran vorzunehmen, ist es notwendig, den Unterschied zwischen Deep Copy und Shallow Copy zu verstehen.
Deep Copy erstellt eine völlig unabhängige Kopie des Quellarrays im Zielarray. Änderungen am Ziel-Array haben keine Auswirkungen auf das ursprüngliche Array und umgekehrt.
$original_array = ['foo' => 'bar', 'baz' => ['a' => 1, 'b' => 2]]; // 深度复制 $deep_copy = clone $original_array; // 或使用深拷贝函数如 array_map(function($value) { return clone $value; }, $original_array) $deep_copy['foo'] = 'new_bar'; $deep_copy['baz']['a'] = 3; var_dump($original_array); // 输出: ['foo' => 'bar', 'baz' => ['a' => 1, 'b' => 2]] var_dump($deep_copy); // 输出: ['foo' => 'new_bar', 'baz' => ['a' => 3, 'b' => 2]]
Flache Kopie kopiert nur die Referenz des Quellarrays. Änderungen am Zielarray werden auch im ursprünglichen Array widergespiegelt.
$original_array = ['foo' => 'bar', 'baz' => ['a' => 1, 'b' => 2]]; // 浅复制 $shallow_copy = $original_array; $shallow_copy['foo'] = 'new_bar'; $shallow_copy['baz']['a'] = 3; var_dump($original_array); // 输出: ['foo' => 'new_bar', 'baz' => ['a' => 3, 'b' => 2]] var_dump($shallow_copy); // 输出: ['foo' => 'new_bar', 'baz' => ['a' => 3, 'b' => 2]]
Tiefe Kopie ist ressourcenintensiver als flache Kopie, da das gesamte Quellarray durchlaufen und neue Entitäten für das Zielarray erstellt werden müssen. Flache Kopien kopieren nur Referenzen und sind daher in der Regel viel schneller als tiefe Kopien.
Verwenden Sie Deep Copy, um eine unabhängige Sammlung von Datenbankeinträgen zu erstellen
// 从数据库获取记录 $records = $db->fetchRecords(); // 深度复制记录集合以进行独立更新 $updated_records = clone $records;
Verwenden Sie flache Kopie, um ein Array an eine Funktion zu übergeben
function updateRecord($record) { $record['updated'] = true; } $original_record = ['id' => 1, 'name' => 'John']; // 浅复制原始记录并更新副本 $shallow_copy = $original_record; updateRecord($shallow_copy); // 更新会反映在原始记录中 var_dump($original_record); // 输出: ['id' => 1, 'name' => 'John', 'updated' => true]
Das obige ist der detaillierte Inhalt vonPHP-Array-Kopierstrategie: Deep Copy und Shallow Copy, Analyse und Leistungsvergleich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!