陣列鍵的隱式轉換規則
- 整數字符串
'8' → 整數 8
- 前導零
'02' → 字符串 '02'(非八進制)
- 浮點數
8.7 → 整數 8(截斷)
true/false/null → 1/0/''
裸字符串鍵的風險
<?php
$arr = ['fruit' => 'apple'];
echo $arr[fruit]; // Notice: Use of undefined constant fruit
// 若後定義 define('fruit','veggie'),則 $arr[fruit] 變為 $arr['veggie'] → 'carrot'
// 正確寫法
echo $arr['fruit'];
echo "Hello {$arr['fruit']}"; // 雙引號內建議用 {$arr['key']}
多維陣列訪問練習
<?php
$multi = [
"red",
"green",
42 => "blue",
"yellow" => [
"apple",
9 => "pear",
"banana",
"orange" => ["dog","cat","iguana"]
]
];
// A. $multi['yellow'][0] → "apple"
// B. $multi[42] → "blue"
// C. $multi['yellow']['orange'][1] → "cat"
// D. $multi[3][3][2] → "iguana" (索引 3=yellow, 子索引 3=orange, 子子索引 2=iguana)
高頻函數速查表
| 函數 | 用途 | 示例 |
| array_walk | 遍歷並修改原陣列 | array_walk($arr, fn(&$v)=>$v=trim($v)) |
| var_dump / print_r | 調試輸出結構 | var_dump($arr) |
| array_intersect | 交集(保留鍵) | array_intersect($a,$b) |
| array_sum | 數值求和 | array_sum([1,2,3])=6 |
| array_count_values | 值頻次統計 | ['a','b','a'] → ['a'=>2,'b'=>1] |
| array_flip | 鍵值互換 | ['a'=>1,'b'=>2] → [1=>'a',2=>'b'] |
| natsort | 自然排序 | ['img2','img10','img1'] → img1,img2,img10 |
| ksort/krsort | 按鍵正/倒序 | ksort($arr) |
| asort/arsort | 按值正/倒序(保留鍵) | asort($arr) |
| usort | 自定義比較排序 | usort($arr, fn($a,$b)=>$a<=>$b) |
| array_reverse | 反轉順序 | array_reverse($arr) |
| array_merge | 合併(數字鍵重建) | array_merge([0=>'a'],[0=>'b']) → ['a','b'] |
| reset/end/next/prev | 內部指針操作 | reset($arr) |
| array_combine | 兩陣列組成鍵值對 | array_combine(['a','b'],[1,2]) |
| array_diff | 差集(僅值) | array_diff([1,2,3],[2])=[1,3] |
| array_filter | 回調過濾 | array_filter($arr, fn($v)=>$v>0) |
| array_search | 搜值返鍵 | array_search('a',$arr) |
現代寫法提示
- PHP 7.4+ 箭頭函數
fn($v) => $v * 2 讓回調更簡潔。
array_key_first() / array_key_last() 替代 reset()/end() 不改動指針。
[] 短語法替代 array()。