PHP 陣列本質是有序映射,每個元素由鍵值對組成。掌握鍵值操作函數,能讓資料轉換、檢索、重組更高效優雅。本文系統梳理五大高頻函數族,附完整參數說明與實戰代碼。
array_values() — 重置索引、提取純值返回陣列所有值,捨棄原鍵名,以 0 起始數字索引重建。適用於:索引混亂需重排、關聯陣列轉索引陣列。
<?php $contact = ['ID'=>1, '姓名'=>'高某', '公司'=>'A公司', '地址'=>'北京市', '電話'=>'(010)98765432']; print_r(array_values($contact)); // 輸出:[0=>1, 1=>'高某', 2=>'A公司', 3=>'北京市', 4=>'(010)98765432'] // 原陣列 $contact 保持不變 ?>
array_keys() — 精準檢索鍵名原型:array_keys(array $input, mixed $search_value = null, bool $strict = false)
$input:返回所有鍵名;$search_value:返回值等於該值的鍵名;$strict=true:嚴格比較類型與值(如 '10' ≠ 10)。<?php $lamp = ['a'=>'Linux','b'=>'Apache','c'=>'MySQL','d'=>'php']; print_r(array_keys($lamp)); // 全鍵名 print_r(array_keys($lamp,'Apache')); // ['b'] $a = [10,20,30,'10']; print_r(array_keys($a,'10',false)); // [0,3] 非嚴格 print_r(array_keys($a,'10',true)); // [3] 嚴格模式 ?>
in_array() / array_search() / array_key_exists() — 多維度存在性檢查| 函數 | 用途 | 關鍵特性 |
|---|---|---|
in_array($needle,$haystack,$strict) | 值存在性 | 支援嚴格模式、陣列作針值、大小寫敏感 |
array_search($needle,$haystack,$strict) | 值→鍵名 | 找到返回首個匹配鍵名,否則 false |
array_key_exists($key,$array) | 鍵名存在性 | 鍵值為 null 也返回 true,優於 isset() |
<?php
$os = ['Mac','NT','Trix','Linux'];
var_dump(in_array('Trix',$os)); // true
var_dump(in_array('mac',$os)); // false(區分大小寫)
$a = ['1.10',12.4,1.13];
var_dump(in_array('12.4',$a,true)); // false(字串≠浮點)
var_dump(in_array(1.13,$a,true)); // true
$lamp = ['a'=>'Linux','b'=>'Apache','c'=>'MySQL','d'=>'php'];
echo array_search('php',$lamp); // d
$b = ['a'=>'8','b'=>8,'c'=>'8'];
echo array_search(8,$b,true); // b(嚴格匹配整型)
$arr = ['first'=>1,'second'=>4];
var_dump(isset($arr['first'])); // true
$arr['first'] = null;
var_dump(isset($arr['first'])); // false
var_dump(array_key_exists('first',$arr)); // true
?>
array_flip() — 鍵值互換返回鍵值互換後的陣列。值重複時,後者覆蓋前者。值必須為 integer 或 string,否則報警告。
<?php $lamp = ['os'=>'linux','WebServer'=>'Apache','Database'=>'MySQL','Language'=>'PHP']; print_r(array_flip($lamp)); // ['linux'=>'os','Apache'=>'WebServer','MySQL'=>'Database','PHP'=>'Language'] $trans = ['a'=>1,'b'=>1,'c'=>2]; print_r(array_flip($trans)); // [1=>'b', 2=>'c'] 值 1 重複,保留最後鍵 'b' ?>
array_reverse() — 順序反轉原型:array_reverse(array $array, bool $preserve_keys = false)。$preserve_keys=true 保留原鍵名,否則重建數字索引。
<?php $lamp = ['OS'=>'Linux','WebServer'=>'Apache','Database'=>'MySQL','Language'=>'PHP']; print_r(array_reverse($lamp)); // 保留鍵名:['Language'=>'PHP','Database'=>'MySQL','WebServer'=>'Apache','OS'=>'Linux'] ?>
isset($arr[$key]) 或 array_key_exists,避免 in_array O(n) 掃描;array_flip 適合「值→鍵」反向查找場景(如標籤 ID 映射);array_column、array_map、array_filter 可構建流暢的資料管道。