PHP SplObjectStorage присоединить и переместить в начало списка
У меня небольшая ситуация, я использую объект SplObjectStorage, и в какой-то момент мне нужно прикрепить элемент, но также перенести его в верхнюю часть списка, поэтому, когда я перебираю элементы, я получу его в качестве первого объекта.
т.е.
$splObj->attach($something)
$splOBj->attach($something2)
$splObj->attach($this_must_be_first);
// When I iterate
foreach($splOBj as $obj) {
// I need the FIRST item to be the $this_must_be_first
}
1 ответ
Решение
Не уверен, что это существует для iterators
но это простая работа с iterator_to_array
а также array_reverse
$splObj = new SplObjectStorage();
$last = new stdClass();
$last->element = "Last Element";
$splObj->attach(new stdClass());
$splObj->attach(new stdClass());
$splObj->attach($last);
$splArray = iterator_to_array($splObj);
$splArray = array_reverse($splArray);
foreach ($splArray as $obj)
{
var_dump($obj);
}
Выход
object(stdClass)[2]
public 'element' => string 'Last Element' (length=12)
object(stdClass)[4]
object(stdClass)[3]