陣列是 PHP 中最核心的資料結構之一。本文系統整理了 array_values、array_walk、arsort、asort、compact、extract、count、current 等常用函數的用法、參數與實戰範例,幫助開發者靈活駕馭陣列資料。
返回陣列所有值並重新建立從 0 開始的數字索引,適合處理 array_flip 後的陣列。
<?php
$arr = array("a", "b", "c");
$arr = array_flip($arr); // 索引值互換
$arr = array_values($arr); // 重置索引
print_r($arr); // Array ( [0] => 0 [1] => 1 [2] => 2 )
?>
對陣列每個元素套用使用者自訂函數,僅處理第一維。透過引用參數可直接修改原陣列。
<?php
$arr = array('a', 'b', 'c');
array_walk($arr, 'test');
function test(&$val, $key) {
$val = 'x_' . $val;
}
print_r($arr); // Array ( [0] => x_a [1] => x_b [2] => x_c )
// 攜帶額外參數
array_walk($arr, 'test2', 'prefix_');
function test2(&$val, $key, $prefix) {
$val = $prefix . $val;
}
?>
兩者皆保持鍵與值的對應關係,僅處理第一維。
<?php
$arr = array('a' => 'a', 'b' => 'b', 'c' => 'c');
arsort($arr); // Array ( [c] => c [b] => b [a] => a )
asort($arr); // Array ( [a] => a [b] => b [c] => c )
?>
EXTR_OVERWRITE、EXTR_SKIP、EXTR_PREFIX_SAME、EXTR_PREFIX_ALL)。<?php
$a = "變數a"; $b = "變數b";
$arr = compact('a', 'b'); // array('a'=>'變數a', 'b'=>'變數b')
extract($arr, EXTR_PREFIX_SAME, 'pre'); // 衝突時加前綴
?>
count($arr):返回元素個數。current($arr)、next()、prev()、end()、reset()、key():內部指標導航,配合 each() 或 foreach 使用。<?php
$arr = array('a', 'b', 'c');
echo current($arr); // a
echo next($arr); // b
echo end($arr); // c
echo prev($arr); // b
echo key($arr); // 1
reset($arr); // 重置指標到開頭
?>
sort、usort、array_multisort),效能優於自行實作演算法。array_walk 遞迴處理多維陣列需自行實作或改用 array_walk_recursive(PHP 5+)。extract 時務必小心變數污染,建議搭配 EXTR_PREFIX_ALL 避免覆蓋既有變數。