鍵名大小寫轉換
$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、排序函數族、陣列指標操作、隨機抽樣、多維陣列處理等進階函數。