1. 程式人生 > >PHP之spl,用最簡單的方式教你使用

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

列印結果: