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

PHP array_column 兼容實作:低版本 PHP 也能用的欄位提取函數

     編輯:PHP 綜合知識

前言

array_column() 是 PHP 5.5+ 引入的實用函數,可從多維陣列提取單一欄位值。但許多舊專案仍運行在 PHP 5.3/5.4 環境。本文提供純 PHP 相容實作,功能完整支援 $column_key 與可選的 $index_key。

原生函數行為回顧

 1, 'name' => 'Tom', 'age' => 20],
    ['id' => 2, 'name' => 'Jack', 'age' => 21],
    ['id' => 3, 'name' => 'Martin', 'age' => 28],
];

// 提取 name 欄位 -> 索引重設為 0,1,2...
$names = array_column($a, 'name');
// ['Tom', 'Jack', 'Martin']

// 提取 name,以 id 為鍵
$names = array_column($a, 'name', 'id');
// [1 => 'Tom', 2 => 'Jack', 3 => 'Martin']
?>

兼容實作代碼



增強版:支援物件、巢狀鍵、嚴格模式



完整測試套件

 1, 'user' => ['name' => 'Tom'], 'age' => 20],
    ['id' => 2, 'user' => ['name' => 'Jack'], 'age' => 21],
    ['id' => 3, 'user' => ['name' => 'Martin'], 'age' => 28],
    ['id' => 4, 'age' => 25],  // 缺 user 欄位
];

echo "=== 基本提取 ===\n";
var_dump(array_column($data, 'age'));
// [20, 21, 28, 25]

echo "\n=== 指定 index_key ===\n";
var_dump(array_column($data, 'age', 'id'));
// [1=>20, 2=>21, 3=>28, 4=>25]

echo "\n=== 巢狀鍵提取 (user.name) ===\n";
var_dump(array_column($data, 'user.name'));
// ['Tom', 'Jack', 'Martin']  (第4筆缺失被跳過)

echo "\n=== 巢狀鍵 + index_key ===\n";
var_dump(array_column($data, 'user.name', 'id'));
// [1=>'Tom', 2=>'Jack', 3=>'Martin']

echo "\n=== 物件支援 ===\n";
$objData = [
    (object)['id' => 1, 'name' => 'Tom'],
    (object)['id' => 2, 'name' => 'Jack'],
];
var_dump(array_column($objData, 'name', 'id'));
// [1=>'Tom', 2=>'Jack']

效能對比與建議

版本10萬筆資料耗時記憶體
原生 (PHP 7.4+)~3ms低 (C 實作)
基本相容版~15ms中
增強版~25ms中高
  • PHP 5.5+ 環境**直接使用原生函數**,效能最佳
  • 舊環境引入相容版即可,效能差距在可接受範圍
  • 大量資料處理建議改用 array_map + array_values 或生成器逐行處理

相關陣列函數速查

函數用途PHP 版本
array_column提取單欄位5.5+
array_map對每元素套用回調4.0+
array_filter過濾元素4.0+
array_reduce累加器模式4.0+
array_combine兩陣列組合為鍵值對5.0+
array_keys / array_values取得鍵/值陣列4.0+

延伸閱讀

更多 PHP 相關內容可參考本站專題:《PHP 字符串用法總結》、《PHP 陣列操作技巧大全》、《PHP 運算與運算符用法總結》、《PHP 網絡編程技巧總結》、《PHP 基本語法入門教程》、《PHP 操作 Office 文檔技巧總結》、《PHP 日期與時間用法總結》、《PHP 面向對象程序設計入門教程》、《PHP+MySQL 數據庫操作入門教程》及《PHP 常見數據庫操作技巧匯總》。

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