PHP 标准库 SplStack 栈

栈有什么特点

栈遵循后进先出的原则 (LIFO)。这意味着栈只有一个出口用来压入元素和弹出元素,当我们执行压入或者弹出操作的时候要注意栈是否已满或者栈是否是空的。

栈的方法

  • push
  • pop
  • top
  • bottom
  • isEmpty
  • offsetSet
  • offsetGet
  • offsetExists
  • offsetUnset

代码

<?php
header("Content-type:text/html; charset=utf-8");

$stack = new SplStack();

//LIFO
echo 'stack push',PHP_EOL;

//入栈
$stack->push('hello');
$stack->push('world');
$stack->push('web');
$stack[] = 'site';
$stack[] = 'devlop';


echo '***************',PHP_EOL;

//设置index为 0 的元素(栈顶)的值为 DEVLOP,遍历栈
$stack->offsetSet(0, 'DEVLOP');
foreach($stack as $val) {
    echo $val,PHP_EOL;
}

echo '***************',PHP_EOL;
//查看栈元素个数
echo '栈内有',$stack->count(),'个元素',PHP_EOL;
echo '栈内有',count($stack),'个元素',PHP_EOL;

echo '***************',PHP_EOL;
//查看栈顶、栈底元素
echo '栈顶元素是',$stack->top(),PHP_EOL;
echo '栈底元素是',$stack->bottom(),PHP_EOL;

echo '***************',PHP_EOL;
//遍历栈
foreach($stack as $val) {
    echo $val,PHP_EOL;
}

echo '***************',PHP_EOL;
//出栈
while($stack->count() != 0) {
    echo '栈顶元素是:',$stack->top(),PHP_EOL;
    $stack->pop();
}

输出

stack push
***************
DEVLOP
site
web
world
hello
***************
栈内有5个元素
栈内有5个元素
***************
栈顶元素是DEVLOP
栈底元素是hello
***************
DEVLOP
site
web
world
hello
***************
栈顶元素是:DEVLOP
栈顶元素是:site
栈顶元素是:web
栈顶元素是:world
栈顶元素是:hello

参考来源

PHP 标准库 SPL 之数据结构栈(SplStack)简单实践 - 韶华休笑 - 博客园 (cnblogs.com)

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1

我一直没搞懂

$data[] = 1;
$data->push(1); 

这两种有啥区别?还是说前者是后者的简写?

2年前 评论
Aliliin 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!