專案需求:陣列內容動態變動,已知某個鍵名,如何快速取得其「下一個」鍵名?翻閱手冊與搜尋網路皆無現成函數,索性自寫一個,發現幾行代碼即可搞定。
<?php
/**
* 取得陣列中指定鍵名的下一個鍵名
* @param array $array 目標陣列
* @param mixed $keys 當前鍵名
* @return mixed|null 下一個鍵名,若不存在或為最後一個則回傳 null
*/
function next_array_key($array, $keys) {
$found = false;
foreach ($array as $key => $value) {
if ($found) {
return $key; // 找到目標鍵後的下一輪,直接回傳當前鍵
}
if ($key === $keys) {
$found = true; // 標記已找到目標鍵
}
}
return null; // 目標鍵不存在或已是最後一個
}
// 測試
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
var_dump(next_array_key($arr, 'b')); // string(1) "c"
var_dump(next_array_key($arr, 'd')); // NULL
var_dump(next_array_key($arr, 'x')); // NULL
=== 區分 0、'0'、false 等不同類型鍵名。foreach 依陣列內部指標順序遍歷,符合「下一個」的語義。null,呼叫端可用 is_null() 判斷。| 方法 | 優點 | 缺點 |
|---|---|---|
next() + key() | 內建函數 | 會移動內部指標,需先 reset() 定位,破壞原陣列狀態 |
array_keys() + array_search() | 語意清晰 | 需建立鍵名陣列,額外記憶體與遍歷開銷 |
自訂 next_array_key() | 單次遍歷、不改狀態、語意明確 | 需自行維護代碼 |
PHP 陣列函數雖豐富,但特定業務場景下,自己寫一個語意精確、副作用可控的小函數 往往比湊合內建函數更乾淨、更好維護。