Heim >Backend-Entwicklung >PHP-Problem >So kopieren Sie PHP-Objekte flach

So kopieren Sie PHP-Objekte flach

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-23 16:08:131579Durchsuche

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.

So kopieren Sie PHP-Objekte flach

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:sunzhongwei.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen