Обновить массив

$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);

?>

Кстати, вам может потребоваться обновить соглашения об именах переменных с чем-то более значимым.: -)