因此,我編寫了一個函數,它可以深入到數組中尋找鍵和子鍵對的兩個級別。基本上它正在尋找key['subkey']
,如果它發現它,返回key['subkey']
。PHP - 在鍵和子鍵上遞歸搜索數組,成功返回鍵['subkey]
我在尋找的是一種以真正遞歸的方式完成此操作的方法,並根據需要深度搜索多個級別,直到它到達數組的末尾並強制返回false或找到值並返回它。
我在PHP上完全陌生,而且我已經搜索了幾個小時而沒有任何結果。任何指針正確的方向將不勝感激。
這是函數:
function searchArray($array, $key, $subkey) {
foreach ($array as $item){
if (is_array($item) && isset($item[$key]) && isset($item[$key][$subkey])){
return $item[$key][$subkey];
} else {
foreach ($item as $subitem){
if (is_array($subitem) && isset($subitem[$key]) && isset($subitem[$key][$subkey])){
return $subitem[$key][$subkey];
}
}
}
}
}
樣本數組:
"locales" => array(
"America" => array(
"locations" => array(
"us" => array(
"title" => "United States",
"lang" => "en_US",
),
"gl" => array(
)
)
),
"Europe" => array(
"locations" => array(
"at" => array(
"title" => "Österreich",
"lang" => "de_DE",
),
"fr" => array(
"title" => "France",
"lang" => "fr_FR",
),
"de" => array(
"title" => "Deutschland",
"lang" => "de_DE",
),
"it" => array(
"title" => "Italy",
"lang" => "it_IT",
),
"uk" => array(
"title" => "United Kingdom",
"lang" => "en_GB",
)
)
),
"Africa" => array(
"locations" => array(
"za" => array(
"title" => "Südafrika",
"lang" => "en_ZA",
)
)
),
"Asia & Pacific" => array(
"locations" => array(
"au" => array(
"title" => "Australia",
"lang" => "en_AU",
),
"cn" => array(
"title" => "中國",
"lang" => "zh_CN",
),
"hk" => array(
"title" => "香港",
"lang" => "zh_CN",
),
"jp" => array(
"title" => "日本",
"lang" => "jp_JP",
),
"kr" => array(
"title" => "한국",
"lang" => "ko_KR",
)
)
)
)
調用searchArray($siteOptions['locales'], 'us', 'lang')
應該返回'en_US'
。
我不得不在foreach循環中包含if(is_array($ array){}',除此之外,完美!非常感謝。 – StephenRios