![](/img/trans.png)
[英]php array_key_exists, !empty and isset fails for no reason?
[英]PHP array_key_exists and is not empty
在上一個問題之后,我現在使用以下函數來檢查多維數組中是否存在鍵...
function array_key_exists_r($needle, $haystack) {
$result = array_key_exists($needle, $haystack);
if ($result)
return $result;
foreach ($haystack as $v) {
if (is_array($v) || is_object($v))
$result = array_key_exists_r($needle, $v);
if ($result)
return $result;
}
return $result;
}
我正在這樣檢查...
if (array_key_exists_r("image",$myarray)) {
echo 'Array Key Image Exists';
}
但是現在我正在嘗試修改它或結果以檢查鍵是否為空,我可以在函數內部執行此操作還是應該對函數的輸出執行某些操作?
還是應該改用isset?
是否在函數內部執行此操作完全取決於您。 就我個人而言,如果我在函數內執行此操作,我會將其名稱更改為更清晰的名稱,因為它不僅檢查鍵是否存在。 無論如何,我在同一函數中找到了一個解決方案:
function array_key_exists_r($needle, $haystack){
$result = array_key_exists($needle, $haystack);
if ($result && $haystack[$needle]){
return $result;
}
foreach ($haystack as $v)
{
if (is_array($v) || is_object($v)){
$result = array_key_exists_r($needle, $v);
if ($result) {
return $result;
}
}
}
return false;
}
因此,基本上,我在您的ifs上添加了一個驗證,並且這樣做也將默認返回值更改為false以防萬一。 我認為它仍然可以增強,但是可以做到。
請嘗試這種方法。 更輕松!
function array_key_exists_r($needle, $haystack) {
$found = [];
array_walk_recursive($haystack, function ($key, $value) use (&$found) {
# Collect your data here in $found
});
return $found;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.