2 回答

TA貢獻1815條經驗 獲得超10個贊
沒有現成的功能可以做到這一點。假設你有:
$key = 'link';
$value = '/voip/e999?seq=' . $seq;
// and $nav your multidimensionnal array
您可以編寫自己的遞歸函數:
function contains_key_value_multi($arr, $key, $value) {
foreach ($arr as $k => $v) {
if ( is_array($v) && contains_key_value_multi($v, $key, $value) ||
$k === $key && $v === $value )
return true;
}
return false;
}
var_dump(contains_key_value_multi($nav, $key, $value));
您可以使用spl 類來遍歷多維數組的葉子。這次你不需要遞歸函數:
$ri = new RecursiveIteratorIterator(new RecursiveArrayIterator($nav));
function contains_key_value($arr, $key, $value) {
foreach ($arr as $k => $v) {
if ( $k === $key && $v === $value )
return true;
}
return false;
}
var_dump(contains_key_value($ri, $key, $value));

TA貢獻1982條經驗 獲得超2個贊
既然你說值在link
鍵中,那么你可以使用 array_column 來隔離link
項目。
if(in_array($_GET["nav"], array_column($nav['Account Settings'], "link")) || in_array($_GET["nav"], array_column(array_slice($nav, 1), "link"))){
這將首先查看帳戶設置中的所有鏈接項,然后切出帳戶設置并查看鏈接項的其他兩個子數組。
- 2 回答
- 0 關注
- 233 瀏覽
添加回答
舉報