2016-02-17 5 views
0

Im пытается скопировать массив объектов в новый массив. но ссылка на объекты в массиве остается неизменной. мой код:Удалить ссылку на объект из массива объектов в PHP

$newArray = $this->ContentArray; 
var_dump(newArray[0]->text); //print "text" 
var_dump($this->ContentArray[0]->text); //print "text" 
$this->ContentArray[0]->text = "edit text"; 
var_dump(newArray[0]->text); //print edit text" 

Как я могу удалить ссылку на объекты?

+1

Typo '$ this-ContentArray [0] -> text =" редактировать текст "; 'должен быть' $ this-> ContentArray [0] -> text = "редактировать текст"; ' –

ответ

1

Вы могли клонировать каждый явно элемент массива:

$newArray = array_map(
    function ($element) { return clone $element; }, 
    $this->ContentArray 
); 
array_merge($this->ContentArray,$newArray); 

var_dump(newArray[0]->text); 
var_dump($this->ContentArray[0]->text); 
$this->ContentArray[0]->text = "edit text"; 
var_dump(newArray[0]->text); 

Но я предпочитаю решение от Praveen Кумара.

0

Вы получили опечатка: $this-ContentArray[0]->text = "edit text";

Должно быть $this->ContentArray[0]->text = "edit text";

EDIT А вы пробовали положить '$' перед тем newArray?

EDIT 2

кажется, что объекты в PHP всегда передаются по ссылке, даже если вы. Вы можете проверить эту тему: Passed by reference

+0

спасибо, я сейчас редактирую его, но это не промлем – Bakalash

Смежные вопросы