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

更多详细使用:http://php.net/manual/zh/class.splstack.php

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

更多详细使用:http://php.net/manual/zh/class.splqueue.php

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
?>

更多详细使用:http://php.net/manual/zh/class.splheap.php

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);

打印结果:

更多详细使用:http://php.net/manual/zh/class.splfixedarray.php

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MClink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值