PHP之spl,用最簡單的方式教你使用
阿新 • • 發佈:2019-01-29
一、什麼是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);
列印結果: