php的SPL提供了些数据结构基本类型的实现,虽然我们可以使用传统的变量类型来描述数据结构,例如用数组来描述堆栈(Strack)然后使用对应的方式 pop 和 push(array_pop()、array_push()),但你得时刻小心,因为毕竟它们不是专门用于描述数据结构的,一次误操作就有可能破坏该堆栈。而SPL的 SplStack 对象则严格以堆栈的形式描述数据,并提供对应的方法。同时,这样的代码应该也能理解它在操作堆栈而非某个数组,从而能让你的同伴更好的理解相应的代码,并且它更快。
栈的实现
$stack = new SplStack(); //入栈 $stack->push('a'); $stack->push('b'); //出栈 echo $stack->pop(); echo $stack->pop();
队列的实现
$queue = new SplQueue(); //入队列 $queue->enqueue('a'); $queue->enqueue('b'); $queue->enqueue('c'); //出队列 echo $queue->dequeue(); echo $queue->dequeue(); echo $queue->dequeue();
最小堆的实现
$heap = new SplMinHeap(); //插入到堆 $heap->insert('a'); $heap->insert('b'); //从堆中提取数据 echo $heap->extract(); echo $heap->extract();
固定长度的数组
$array = new SplFixedArray(5); $array[1] = 5; var_dump($array);