PHP: testing for existence of a cell in a multidimensional array

后端 未结 4 1021
忘了有多久
忘了有多久 2021-02-01 15:11

I have an array with numerous dimensions, and I want to test for the existence of a cell.

The below cascaded approach, will be for sure a safe way to do it:



        
4条回答
  •  遇见更好的自我
    2021-02-01 15:36

    I was having the same problem, except i needed it for some Drupal stuff. I also needed to check if objects contained items as well as arrays. Here's the code I made, its a recursive search that looks to see if objects contain the value as well as arrays. Thought someone might find it useful.

    function recursiveIsset($variable, $checkArray, $i=0) {
        $new_var = null;
        if(is_array($variable) && array_key_exists($checkArray[$i], $variable))
            $new_var = $variable[$checkArray[$i]];
        else if(is_object($variable) && array_key_exists($checkArray[$i], $variable))
            $new_var = $variable->$checkArray[$i];
        if(!isset($new_var))
            return false;
    
        else if(count($checkArray) > $i + 1)
            return recursiveIsset($new_var, $checkArray, $i+1);
        else
            return $new_var;
    }
    

    Use: For instance

    recursiveIsset($variables, array('content', 'body', '#object', 'body', 'und'))
    

    In my case in drupal this ment for me that the following variable existed

    $variables['content']['body']['#object']->body['und']
    

    due note that just because '#object' is called object does not mean that it is. My recursive search also would return true if this location existed

    $variables->content->body['#object']->body['und']
    

提交回复
热议问题