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

PHP 陣列鍵值操作核心函數深度解析與實戰指南

     編輯:PHP 相關知識

PHP 陣列鍵值操作五大核心函數族詳解

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 可構建流暢的資料管道。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved