PHP 數組鍵值看似簡單,實則包含整型索引自動遞增、字符串數字鍵轉換、顯式鍵覆蓋默認鍵等微妙規則。本文通過一個綜合案例完整演示鍵值生成邏輯。
$switching = array(
10, // key = 0
5 => 6, // key = 5
3 => 7, // key = 3
'a' => 4, // key = 'a'
11, // key = 6 (最大整型鍵 5 + 1)
'8' => 2, // key = 8 (字符串 '8' 自動轉整型 8)
'02' => 77, // key = '02' (非純數字字符串,保持字符串)
0 => 12 // key = 0 覆蓋第一個元素 10
);
Array
(
[0] => 12
[5] => 6
[3] => 7
[a] => 4
[6] => 11
[8] => 2
[02] => 77
)
max(現有整型鍵) + 1。'8'、'08' 自動轉為整型 8;'02' 因前導零 **不** 轉換,保持字符串 '02'。0 => 12 會覆蓋先前自動分配的 0 => 10。'' / 整型 1。// 查看鍵類型
foreach ($arr as $k => $v) {
echo gettype($k) . " => $k\n";
}
// 重建數組修正鍵
$arr = array_values($arr); // 重置為 0 起始連續整型索引
[] 追加比 array_push() 快。array_flip() 反轉後用 isset() O(1) 判斷。in_array(),改用鍵值索引。精通鍵值機制,能避免「鍵值不如預期」導致的邏輯 Bug,也是優化數組操作性能的前提。