快捷搜索: 王者荣耀 脱发

PHP之spl,用最简单的方式教你使用

一、什么是spl标准库呢?

引官方的一段解释:SPL是用于解决典型问题(standard problems)的一组接口与类的集合。

对许多phper来说,这个东西估计很多人并不熟悉,在平时的开发初级开发者并用不到,或者用到了也不知道。在重温数据结构的时候,我就在想,PHP有没有已经封装好的函数或方法可以直接使用队列,栈这些东西呢?好奇的我上网查询了一下,这世界上最好的语言确实名不虚传。确实有这些函数。它们被放在一个个封装类里,我们只需要实例化这些类,就可以调用相应的方法进行操作。

实际上,这是一个PHP拓展,大概类似于swoole吧,此拓展只能再PHP5.3后使用,并且现在已经内置到PHP内核中,说明我们不需开启相应配置即可使用。这里我主要重点说明关于数据结构的spl使用。

二、spl的常见四种数据结构的使用

2.1 栈的使用:

我们知道栈是一种后进先出的数据结构。并且只能对栈的两端进行操作,进栈或者出栈。SplStack类通过使用一个双向链表来提供栈的主要功能。简单的操作如下:

<?php
	$stack = new SplStack();
	$stack->push(5);
	$stack->push(1);
	$stack->push(7);
	//在指定的原来索引后面插入数值,注意这里的索引是从7为0开始算的
	$stack->add(1,3);
   
	echo $stack->pop();//7
	echo $stack->pop();//1
	echo $stack->pop();//3
	echo $stack->pop();//5

更多详细使用:

2.2队列的使用

队列是一种先进先出的数据结构。

<?php
  $queue = new splQueue();
  $queue->enqueue(5);
  $queue->enqueue(2);
  $queue->enqueue(1);
  $queue->enqueue(3);

  echo $queue->dequeue(); //5
  echo $queue->dequeue(); //2
  echo $queue->dequeue(); //1
  echo $queue->dequeue(); //3

更多详细使用:

2.3 堆的使用:

<?php
$heap = new SplMaxHeap(); # 最大堆 升序输出
$heap->insert(E);
$heap->insert(B);
$heap->insert(D);
$heap->insert(A);
$heap->insert(C);

echo $heap->extract(), PHP_EOL; # E
echo $heap->extract(), PHP_EOL; # D

$heap = new SplMinHeap(); # 最小堆 降序输出
$heap->insert(E);
$heap->insert(B);
$heap->insert(D);
$heap->insert(A);
$heap->insert(C);

print PHP_EOL;
echo $heap->extract(), PHP_EOL; # A
echo $heap->extract(), PHP_EOL; # B
?>

更多详细使用:

2.4 固定数组的使用

<?php
	//长度为10的固定数组
	$array = new SplFixedArray(10);
    $array[1] = 2;
    $array[3] = you;
    $array[5] = are;
    $array[7] = the;
    $array[9] = best;

    var_dump($array);

    //拓展数组大小
    $array->setSize(15);
    
    var_dump($array);

打印结果:

更多详细使用:

经验分享 程序员 微信小程序 职场和发展