3

少し状況があります。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
}
4

1 に答える 1

0

これが存在するかどうかはわかりませんが、これはとを使用したiterators簡単な回避策です。iterator_to_arrayarray_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]
于 2012-09-27T17:26:29.237 に答える