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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章