ปรากฏว่าในวัตถุ PHP จะถูกส่งผ่านโดยอ้างอิง แม้ผู้ประกอบการที่ได้รับมอบหมายไม่ปรากฏว่ากำลังสร้างสำเนาของวัตถุ
นี่เป็นข้อพิสูจน์ที่เรียบง่าย
<?php
class A {
public $b;
}
function set_b($obj) { $obj->b = "after"; }
$a = new A();
$a->b = "before";
$c = $a; //i would especially expect this to create a copy.
set_b($a);
print $a->b; //i would expect this to show 'before'
print $c->b; //i would ESPECIALLY expect this to show 'before'
?>
ในทั้งสองกรณีพิมพ์ฉันได้รับ 'after'
ดังนั้นฉันจะส่ง$ aถึงset_b ()ด้วยค่าไม่ใช่การอ้างอิงได้อย่างไร
(object) ((array) $objectA)
อาจส่งผลให้ผลลัพธ์เดียวกันต้องการด้วยประสิทธิภาพที่ดีขึ้นแล้วใช้หรือclone $objectA
new stdClass