2017-02-19 10 views
0

Когда я копирую PHP массив со ссылкой, копия уже есть ссылки из оригинального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

Возможная Дубликат [PHP элементов массива копирование по значению, а не по ссылке] (http://stackoverflow.com/questions/1190026/php-copying-array-elements-by-value-not-by- Справка) –

ответ

0

Если проблема решаются с помощью дубликата ссылки в первом комментарии Вашего вопроса (в поддержку 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>"; 
Смежные вопросы