Обновить массив
$var
- массив:
Array (
[0] => stdClass Object ( [ID] => 113 [title] => text )
[1] => stdClass Object ( [ID] => 114 [title] => text text text )
[2] => stdClass Object ( [ID] => 115 [title] => text text )
[3] => stdClass Object ( [ID] => 116 [title] => text )
)
Хотите обновить его в два этапа:
- Получите
[ID]
каждого объекта и отбросьте его значение на счетчик позиций (я имею в виду [0], [1], [2], [3]
)
- Удалите
[ID]
после бросания
Наконец, обновленный массив ($new_var
) должен выглядеть так:
Array (
[113] => stdClass Object ( [title] => text )
[114] => stdClass Object ( [title] => text text text )
[115] => stdClass Object ( [title] => text text )
[116] => stdClass Object ( [title] => text )
)
Как это сделать?
Спасибо.
Ответы
Ответ 1
$new_array = array();
foreach ($var as $object)
{
$temp_object = clone $object;
unset($temp_object->id);
$new_array[$object->id] = $temp_object;
}
Я делаю предположение, что в ваших объектах больше, и вы просто хотите удалить ID. Если вы просто хотите заголовок, вам не нужно клонировать объект и можете просто установить $new_array[$object->id] = $object->title
.
Ответ 2
Я бы подумал, что это сработает (не имеет доступа к интерпретатору, поэтому может потребоваться настройка):
<?php
class TestObject {
public $id;
public $title;
public function __construct($id, $title) {
$this->id = $id;
$this->title = $title;
return true;
}
}
$var = array(new TestObject(11, 'Text 1'),
new TestObject(12, 'Text 2'),
new TestObject(13, 'Text 3'));
$new_var = array();
foreach($var as $element) {
$new_var[$element->id] = array('title' => $element->title);
}
print_r($new_var);
?>
Кстати, вам может потребоваться обновить соглашения об именах переменных с чем-то более значимым.: -)