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

PHP 數組增刪查核心函數速查:push/pop/shift/unshift、搜索、鍵值提取全覆蓋

     編輯:PHP 綜合知識

PHP 數組既是有序映射又是棧/隊列,掌握核心增刪查函數是高效開發的基石。本文系統整理棧/隊列操作、搜索判斷、鍵值提取三大類函數,附帶語法、返回值、典型示例與性能提示,適合作為桌面速查手冊。

一、棧/隊列操作(四大金剛)

函數作用返回值鍵名影響典型場景
array_push($arr, $v1, $v2...)尾部壓入(入棧/入隊)新數組長度(int)數值鍵重新索引,關聯鍵不變收集日志、構建結果集
array_pop($arr)尾部彈出(出棧)被移除的值,空數組返回 null同上撤銷操作、取最後一條記錄
array_unshift($arr, $v1, $v2...)頭部插入(入隊)新數組長度數值鍵重新索引(+n),關聯鍵不變優先隊列、置頂消息
array_shift($arr)頭部移除(出隊)被移除的值,空數組返回 null同上FIFO 隊列消費、輪詢任務

示例:模擬棧與隊列

// 棧 LIFO
$stack = [];
array_push($stack, 1, 2, 3); // [1,2,3]
echo array_pop($stack);      // 3 → [1,2]

// 隊列 FIFO
$queue = [];
array_push($queue, 'a', 'b'); // ['a','b']
echo array_shift($queue);     // 'a' → ['b']

// 反向隊列(雙端)
array_unshift($queue, 'head'); // ['head','b']
array_push($queue, 'tail');    // ['head','b','tail']

二、搜索與判斷函數

函數簽名返回值嚴格模式說明
in_arrayin_array($needle, $haystack, $strict=false)bool$strict=true 同時比較類型值存在性檢查,大數組性能較差(O(n))
array_key_existsarray_key_exists($key, $arr)bool不適用鍵存在性檢查,isset($arr[$key]) 更快但不檢測 null 值
array_searcharray_search($needle, $haystack, $strict=false)匹配的鍵,失敗 false同 in_array需要知道鍵名時使用
array_keysarray_keys($arr, $search_value=null)所有鍵組成的數組提供 $search_value 時過濾批量獲取鍵、配合 array_search 反查
array_valuesarray_values($arr)所有值組成的數組(0-base 重索引)不適用重置數值索引、提取純值列表

示例:多維數組搜索

$users = [
    ['id'=>1, 'name'=>'Alice', 'role'=>'admin'],
    ['id'=>2, 'name'=>'Bob',   'role'=>'user'],
];

// 搜索 role=admin 的鍵
$keys = array_keys(array_column($users, 'role'), 'admin'); // [0]
$user = $users[$keys[0]]; // Alice

// 重置索引提取名單
$names = array_values(array_column($users, 'name')); // ['Alice','Bob']

三、性能與避坑指南

  1. 大數組搜索:in_array/array_search 為 O(n),頻繁查找請改用 isset($map[$key]) 或翻轉鍵值 array_flip 後用鍵查找 O(1)。
  2. array_shift/unshift 會重建數值索引,大數組頻繁操作性能差,考慮 SplQueue/SplStack 或雙端隊列 SplDoublyLinkedList。
  3. array_key_exists vs isset:前者檢測 null 值,後者不檢測;高頻判斷首選 isset。
  4. array_values 會複製整個數組,內存峰值翻倍,大數組慎用或分塊處理。
  5. 嚴格模式 $strict=true 能避免 '1' == 1 等隱式轉換導致的誤判。

四、速查卡片(打印友好版)

增:array_push($arr, $v...)  → 尾部加,返回長度
    array_unshift($arr, $v...) → 頭部加,返回長度
刪:array_pop($arr)           → 尾部刪,返回值
    array_shift($arr)          → 頭部刪,返回值
查:in_array($v, $arr)         → bool
    array_key_exists($k, $arr) → bool
    array_search($v, $arr)     → key|false
    array_keys($arr)           → [keys]
    array_values($arr)         → [values] (re-index)

熟練掌握這 10 個核心函數,覆蓋 90% 的數組操作場景,代碼更簡潔、性能更可控。

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