LonghornPHP 2026

SplQueue::dequeue

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SplQueue::dequeueУдаляет элемент из очереди

Описание

public function SplQueue::dequeue(): mixed

Удаляет value из начала очереди.

Замечание:

SplQueue::dequeue() - псевдоним SplDoublyLinkedList::shift() .

Список параметров

Сигнатура функции не содержит параметров.

Возвращаемые значения

Значение удалённого из очереди элемента.

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 4 notes

up
9
xuecan at gmail dot com
16 years ago
If the queue is empty, dequeue() will raise an 'RuntimeException' with message 'Can't shift from an empty datastructure'.
up
5
mark at bull-roarer dot com
13 years ago
I just thought this was a fun and interesting way for lining up method calls and then calling them back-to-back. Might be useful as a basis for a transactional execution class or something.
<?php
$q = new SplQueue();
$q->setIteratorMode(SplQueue::IT_MODE_DELETE);
$q->enqueue(array("FooBar", "foo"));
$q->enqueue(array("FooBar", "bar"));
$q->enqueue(array("FooBar", "msg", "Hi there!"));
foreach ($q as $task) {
 if (count($task) > 2) {
 list($class, $method, $args) = $task;
 $class::$method($args);
 } else {
 list($class, $method) = $task;
 $class::$method();
 }
}
class FooBar {
 public static function foo() { 
 echo "FooBar::foo() called.\n";
 }
 public static function bar() {
 echo "FooBar::bar() called.\n";
 }
 public static function msg($msg) {
 echo "$msg\n";
 }
}
?>

Results:
FooBar::foo() called.
FooBar::bar() called.
Hi there!
up
3
andresdzphp at php dot net
14 years ago
<?php
$q = new SplQueue();
$q->setIteratorMode(SplQueue::IT_MODE_DELETE);
$q->enqueue('item 1');
$q->enqueue('item 2');
$q->enqueue('item 3');
$q->dequeue();
$q->dequeue();
foreach ($q as $item) {
 echo $item;
}
//Result: item 3
$q->dequeue(); //Fatal error: Uncaught exception 'RuntimeException' 
 //with message 'Can't shift from an empty datastructure'
?>
up
0
mark at bull-roarer dot com
13 years ago
I just thought this was a fun and interesting way for lining up method calls and then calling them back-to-back. Might be useful as a basis for a transactional execution class or something.
<?php
$q = new SplQueue();
$q->setIteratorMode(SplQueue::IT_MODE_DELETE);
$q->enqueue(array("FooBar", "foo"));
$q->enqueue(array("FooBar", "bar"));
$q->enqueue(array("FooBar", "msg", "Hi there!"));
foreach ($q as $task) {
 if (count($task) > 2) {
 list($class, $method, $args) = $task;
 $class::$method($args);
 } else {
 list($class, $method) = $task;
 $class::$method();
 }
}
class FooBar {
 public static function foo() { 
 echo "FooBar::foo() called.\n";
 }
 public static function bar() {
 echo "FooBar::bar() called.\n";
 }
 public static function msg($msg) {
 echo "$msg\n";
 }
}
?>

Results:
FooBar::foo() called.
FooBar::bar() called.
Hi there!
+Добавить

AltStyle によって変換されたページ (->オリジナル) /