首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP array_pop() 刪除並回傳陣列最後一個元素的完整指南

     編輯:PHP 綜合知識

array_pop() 是 PHP 陣列操作的基礎函數,用於**彈出(移除並回傳)陣列的最後一個元素**,類似堆疊的「Pop」操作。本文詳細說明語法、回傳值、指標重置行為與實戰範例。

函數原型

mixed array_pop ( array &$array )
  • 參數:$array 為**傳址呼叫**(引用),函數會直接修改原陣列。
  • 回傳:被移除的元素值;若陣列為空或非陣列,回傳 NULL 並觸發 E_WARNING。
  • 副作用:執行後會**重置陣列內部指標**(相當於 reset($array))。

基本範例

$stack = ['orange', 'banana', 'apple', 'raspberry'];
$fruit = array_pop($stack);

var_dump($fruit); // string(9) "raspberry"
var_dump($stack); // ['orange', 'banana', 'apple']

進階用法與注意事項

1. 空陣列防禦

$arr = [];
$val = array_pop($arr); // NULL,並產生 Warning: array_pop() expects parameter 1 to be array, null given
// 建議先檢查
$val = $arr ? array_pop($arr) : null;

2. 關聯陣列同樣適用

$assoc = ['a' => 1, 'b' => 2, 'c' => 3];
$last = array_pop($assoc); // 3
// $assoc 變為 ['a' => 1, 'b' => 2]

3. 多維陣列彈出子陣列

$matrix = [[1,2], [3,4], [5,6]];
$row = array_pop($matrix); // [5,6]

4. 搭配 array_push() 實作堆疊

$stack = [];
array_push($stack, 'task1', 'task2');
$next = array_pop($stack); // 'task2' (LIFO)

5. 指標重置影響 foreach / current()

$arr = [1,2,3];
next($arr); // 指標指向 2
array_pop($arr); // 移除 3,指標重置指向 1
echo current($arr); // 1(非 2)

效能特性

  • 時間複雜度 **O(1)**:陣列尾部操作無需重新索引。
  • 記憶體:釋放最後一個元素佔用的 zval,陣列結構本身不縮小(PHP 7+ 會在適當時機壓縮)。

常見錯誤

  1. 傳值而非傳址:array_pop($arr) 必須傳變數,**不可**寫 array_pop([1,2,3])(臨時陣列無法修改)。
  2. 混淆 array_shift():array_shift() 移除**第一個**元素並**重新索引數字鍵**(O(n)),效能差異極大。
  3. 忽略 NULL 回傳:直接將回傳值當純量使用可能導致後續邏輯錯誤。

對照表

函數操作位置回傳值重新索引指標重置
array_pop尾部被移除元素否是
array_shift頭部被移除元素是(數字鍵)是
array_push尾部新長度否否
array_unshift頭部新長度是(數字鍵)否

掌握 array_pop() 的引用修改、指標重置、O(1) 特性,即可在堆疊實作、廣度優先搜尋、最近記錄移除等場景高效運用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved