簡體   English   中英

PHP array_key_exists並且不為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM