PHP: SqlQueueのRuntimeExceptionを防ぐ


SplQueueはキューが空のときにdequeue()されるとRuntimeExceptionを起こす。

PHP Fatal error:  Uncaught exception 'RuntimeException' with message 'Can't shift from an empty datastructure' in hoge.php

whileで全部のキューを取ろうとするとこれにハマる。


$q = new SplQueue();

$q->enqueue(1);
$q->enqueue(2);

while($item = $q->dequeue()){ 
    echo $item . PHP_EOL;
}
// Fatal error: Uncaught exception 'RuntimeException' with message 'Can't shift from an empty datastructure'

キューが空になるまでdequeue()し続けたいときはcount()でキューの数をチェックすればよい。


$q = new SplQueue();

$q->enqueue(1);
$q->enqueue(2);

while($q->count() > 0){
    $item = $q->dequeue();
    echo $item . PHP_EOL;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です