Heim > Artikel > Backend-Entwicklung > So kopieren Sie PHP-Objekte flach
Beim Zuweisen ist die Referenzzuweisung gleichbedeutend mit der Übernahme eines Alias; die Änderung eines Alias wirkt sich auf den anderen aus. Beim Zuweisen von Werten in PHP werden gewöhnliche Objekte tief kopiert, Objekte jedoch flach. Mit anderen Worten handelt es sich bei der Zuweisung eines Objekts um eine Referenzzuweisung. Im Folgenden finden Sie eine Einführung in das flache Kopieren von PHP-Objekten. Sie können bei Bedarf darauf zurückgreifen.
Ich bin letzte Woche auf einen Low-Level-Bug gestoßen. Als ich heute hockte, wusste ich nicht, warum mir dieser Bug in den Sinn kam ob es dadurch verursacht wurde, dass das Objekt nicht geklont wurde.
Natürlich besteht das Problem darin, dass beim mehrmaligen Durchlaufen derselben Laravel-Sammlung die Eigenschaften desselben Objekts wiederholt bearbeitet werden, was dazu führt, dass nachfolgende Vorgänge die vorherigen Vorgänge überschreiben. Wenn also das Endergebnis zurückgegeben wird, wird nur das letzte zurückgegeben beibehaltene Operationsergebnisse.
Flache Kopie
$copy_of_object = clone $object;
Lass uns einen Test machen
<?php class City { public $name; } $c1 = new City; $c1->name = "烟台"; echo $c1->name; // 烟台 echo PHP_EOL; $c2 = $c1; echo $c2->name; // 烟台 echo PHP_EOL; $c1->name = "威海"; echo $c2->name; // 威海 echo PHP_EOL; $c3 = clone $c1; echo $c3->name; // 威海 echo PHP_EOL; $c1->name = "青岛"; echo $c3->name; // 威海 echo PHP_EOL;
Testergebnisse
php /tmp/test.php 烟台 烟台 威海 威海 威海
Warum heißt es flache Kopie?
Das Gegenstück ist Deep Copy. Denn im Fall einer flachen Kopie verweisen die Attribute immer noch auf dasselbe Objekt, wenn die Attribute des Objekts immer noch Objekte sind.
Empfohlenes Lernen: php-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo kopieren Sie PHP-Objekte flach. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!