В PHP существует два способа использования массива в виде стека (LIFO)
и два способа использовать их в качестве очереди (FIFO).
Можно реализовать стек с push
и pop
,
но то же самое можно сделать с помощью unshift
& shift
.
Аналогичным образом можно реализовать очередь с push
& shift
,
но то же самое можно сделать с помощью unshift
& pop
.
Демонстрировать:
echo "stack push & pop approach:\n"; $s = []; array_push($s, 'first'); array_push($s, 'second'); array_push($s, 'third'); echo array_pop($s) . '-' . array_pop($s) . '-' . array_pop($s) . "\n"; echo "stack unshift & shift approach:\n"; $s = []; array_unshift($s, 'first'); array_unshift($s, 'second'); array_unshift($s, 'third'); echo array_shift($s) . '-' . array_shift($s) . '-' . array_shift($s) . "\n"; echo "queue push & shift approach:\n"; $q = []; array_push($q, 'first'); array_push($q, 'second'); array_push($q, 'third'); echo array_shift($q) . '-' . array_shift($q) . '-' . array_shift($q) . "\n"; echo "queue unshift & pop approach:\n"; $q = []; array_unshift($q, 'first'); array_unshift($q, 'second'); array_unshift($q, 'third'); echo array_pop($q) . '-' . array_pop($q) . '-' . array_pop($q) . "\n";
Какие результаты:
stack push & pop approach: third-second-first stack unshift & shift approach: third-second-first queue push & shift approach: first-second-third queue unshift & pop approach: first-second-third
Итак, какие функции использовать?