การอ้างอิงอาร์เรย์ใน PHP
ใน PHP ต่างจากภาษาอื่น อาร์เรย์จะถูกคัดลอกแทนที่จะถูกส่งผ่าน โดยการอ้างอิง
ลองมาตรวจสอบเรื่องนี้:
<?php
$arr1 = [1, 2, 3, 4, 5];
$arr2 = $arr1;
$arr2[0] = '!';
var_dump($arr1); // จะไม่เปลี่ยนแปลง
?>
ทีนี้มาบังคับให้อาร์เรย์ถูกส่งผ่าน โดยการอ้างอิง:
<?php
$arr1 = [1, 2, 3, 4, 5];
$arr2 = &$arr1;
$arr2[0] = '!';
var_dump($arr1); // จะเปลี่ยนแปลง
?>
บอกหน่อยว่า ผลลัพธ์ของโค้ดนี้ จะเป็นอย่างไร:
<?php
$arr1 = [1, 2, 3, 4, 5];
$arr2 = $arr1;
$arr2[0] = '!';
echo $arr1[0];
echo $arr2[0];
?>
บอกหน่อยว่า ผลลัพธ์ของโค้ดนี้ จะเป็นอย่างไร:
<?php
$arr1 = [1, 2, 3, 4, 5];
$arr2 = &$arr1;
$arr1[0]++;
echo $arr1[0];
echo $arr2[0];
?>
บอกหน่อยว่า ผลลัพธ์ของโค้ดนี้ จะเป็นอย่างไร:
<?php
$arr1 = [1, 2, 3, 4, 5];
$arr2 = &$arr1;
$arr1[0]++;
$arr2[0]++;
echo $arr1[0];
echo $arr2[0];
?>