萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 陣列函數大全 (上):核心操作與實戰範例

鍵名大小寫轉換

$arr = ['Home' => 'url1', 'Blog' => 'url2'];
array_change_key_case($arr, CASE_UPPER); // ['HOME'=>'url1', 'BLOG'=>'url2']
array_change_key_case($arr, CASE_LOWER); // ['home'=>'url1', 'blog'=>'url2'] (預設)

陣列分塊

$arr = ['a','b','c','d','e'];
array_chunk($arr, 2);         // [['a','b'],['c','d'],['e']] (重新索引)
array_chunk($arr, 2, true);   // [['0'=>'a','1'=>'b'],['2'=>'c','3'=>'d'],['4'=>'e']] (保留鍵)

合併鍵值陣列

$keys = ['Home','Blog'];
$vals = ['url1','url2'];
array_combine($keys, $vals); // ['Home'=>'url1','Blog'=>'url2']
// 兩陣列長度必須相等,否則回傳 false

值出現次數統計

$arr = ['hello','world','tianya','hello','world'];
array_count_values($arr); // ['hello'=>2,'world'=>2,'tianya'=>1]

差集運算家族

函數比較依據說明
array_diff值$a 中有但 $b 無的值,保留鍵
array_diff_key鍵鍵在 $a 不在 $b
array_diff_ukey鍵(回調)自定鍵比較
array_diff_assoc鍵+值鍵值對皆同才移除
array_diff_uassoc鍵+值(回調)自定鍵值比較
$a = ['a'=>'green','red','blue','red'];
$b = ['b'=>'green','yellow','red'];
array_diff($a, $b);        // [1=>'blue'] (索引 1 保留)
array_diff_assoc($a, $b);  // ['b'=>'brown','c'=>'blue',0=>'red']

填充陣列

array_fill(0, 3, 'x');        // [0=>'x',1=>'x',2=>'x']
array_fill_keys(['a','b'], 0); // ['a'=>0,'b'=>0] (PHP 5.2+)

回調過濾

$arr = [2,3,5,6];
array_filter($arr, fn($n) => $n > 3); // [2=>5,3=>6] (保留鍵)

$arr2 = [null, '', 'hello'];
array_filter($arr2); // [2=>'hello'] (無回調時過濾假值)

鍵值交換

$trans = ['a'=>1, 'b'=>1, 'c'=>2];
array_flip($trans); // [1=>'b', 2=>'c'] (重複值後者覆蓋前者)

交集運算家族

函數比較依據說明
array_intersect值多陣列共同擁有的值
array_intersect_assoc鍵+值鍵值對皆同
array_intersect_key鍵共同擁有的鍵
array_intersect_ukey鍵(回調)自定鍵比較
array_intersect_uassoc鍵+值(回調)自定鍵值比較
$a = ['a'=>'green','red','blue'];
$b = ['b'=>'green','yellow','red'];
array_intersect($a, $b);        // ['a'=>'green',0=>'red']
array_intersect_assoc($a, $b);  // ['a'=>'green'] (鍵也要同)

下篇預告

下一篇將涵蓋:array_map、array_walk、array_reduce、array_column、排序函數族、陣列指標操作、隨機抽樣、多維陣列處理等進階函數。

copyright © 萬盛學電腦網 all rights reserved