語法:`array_keys(array, search_value, strict)`
strict=true:嚴格比對型別(`===`)。$test = [10, 20, 30, "10", "20", "30"];
print_r(array_keys($test, "10", true));
// 輸出:Array ( [0] => 3 ) // 只有字串 "10" 在索引 3
function array_keys_recursive($array, $search, $strict = false) {
$keys = [];
foreach ($array as $k => $v) {
if (is_array($v)) {
$sub = array_keys_recursive($v, $search, $strict);
if ($sub) $keys[$k] = $sub;
} elseif (($strict && $v === $search) || (!$strict && $v == $search)) {
$keys[] = $k;
}
}
return $keys;
}
$one = [1, 2, 3, 4];
foreach ($one as $k => $v) {
echo "key=$k & value=$v
";
}
$two = [
"test1" => ['name'=>'tank', 'phone'=>12412433],
"test2" => ['name'=>'ying', 'phone'=>252523523],
"test3" => ['name'=>'zhang','phone'=>656452345],
];
$i = 0;
foreach ($two as $k => $v) {
foreach ($v as $val) {
if ($val === 'tank') { // 注意:原代碼 $v='tank' 是賦值錯誤,應為 ===
echo "Found at index: $i";
}
$i++;
}
}
| 維度 | array_keys | foreach 手動 |
|---|---|---|
| 程式碼簡潔度 | ✅ 一行搞定 | 需寫迴圈、計數器 |
| 效能(大陣列) | C 底層實現,極快 | PHP 解釋執行,較慢 |
| 多維陣列支援 | 需自寫遞迴 | 靈活控制遞迴深度與路徑記錄 |
| 回傳格式 | 直接得鍵名陣列 | 可自訂回傳(索引、路徑、父鍵等) |