Масивни референции в 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];
?>