Когда я копирую массив PHP со ссылкой, копия уже содержит ссылки из оригинала
$arr = [1,2,3];
print_r($arr); echo"<br>";
$x = &$arr[1];
$arr2 = $arr;
print_r($arr); print_r($arr2); echo"<br>";
$x = 8;
print_r($arr); print_r($arr2); echo"<br>";
Результат:
Array ( [0] => 1 [1] => 2 [2] => 3 )
Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 )
Array ( [0] => 1 [1] => 8 [2] => 3 ) Array ( [0] => 1 [1] => 8 [2] => 3 )
Как я могу скопировать массив, чтобы он не изменился с исходной ссылкой?
Array ( [0] => 1 [1] => 2 [2] => 3 )
Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 )
Array ( [0] => 1 [1] => 8 [2] => 3 ) Array ( [0] => 1 [1] => 2 [2] => 3 )
Если ваша проблема решена с помощью повторяющаяся ссылка в первом комментарии вашего вопроса (поддерживается 4 другими в то время, когда я пишу это). Пожалуйста, удалите свой вопрос, чтобы SO мог уменьшить количество повторяющихся вопросов / ненужных раздутий.
В противном случае просто объявите статическую копию исходного массива для будущего использования.
$arr = [1,2,3];
$copy=$arr; // preserve the original
print_r($arr); echo"<br>";
$x = &$arr[1];
$arr2 = $arr;
print_r($arr); print_r($arr2); echo"<br>";
$x = 8;
print_r($arr); print_r($copy); echo"<br>";
Других решений пока нет …