best way to check a empty array?

后端 未结 11 1095
难免孤独
难免孤独 2020-11-30 10:16

How can I check an array recursively for empty content like this example:

Array
(
    [product_data] => Array
        (
            [0] => Array
               


        
相关标签:
11条回答
  • 2020-11-30 10:45

    If anyone stumbles on this question and needs to check if the entire array is NULL, meaning that each pair in the array is equal to null, this is a handy function. You could very easily modify it to return true if any variable returns NULL as well. I needed this for a certain web form where it updated users data and it was possible for it to come through completely blank, therefor not needing to do any SQL.

    $test_ary = array("1"=>NULL, "2"=>NULL, "3"=>NULL);
    
    function array_empty($ary, $full_null=false){
        $null_count = 0;
        $ary_count = count($ary);
    
        foreach($ary as $value){
            if($value == NULL){
                $null_count++;
            }
        }
    
        if($full_null == true){
            if($null_count == $ary_count){
                return true;
            }else{
                return false;
            }
        }else{
            if($null_count > 0){
                return true;
            }else{
                return false;
            }
        }
    }
    
    $test = array_empty($test_ary, $full_null=true);
    echo $test;
    
    0 讨论(0)
  • 2020-11-30 10:46

    Returns TRUE if passed a variable other than an array, or if any of the nested arrays contains a value (including falsy values!). Returns FALSE otherwise. Short circuits.

    function has_values($var) {
      if (is_array($var)) {
        if (empty($var)) return FALSE;
        foreach ($var as $val) {
          if(has_values($val)) return TRUE;
        }
        return FALSE;
      } 
      return TRUE;
    }
    
    0 讨论(0)
  • 2020-11-30 10:47

    Solution with array_walk_recursive:

    function empty_recursive($value)
    {
            if (is_array($value)) {
                    $empty = TRUE;
                    array_walk_recursive($value, function($item) use (&$empty) {
                            $empty = $empty && empty($item);
                    });
            } else {
                    $empty = empty($value);
            }
            return $empty;
    }
    
    0 讨论(0)
  • 2020-11-30 10:47

    Here's a good utility function that will return true (1) if the array is empty, or false (0) if not:

    function is_array_empty( $mixed ) {
        if ( is_array($mixed) ) {
            foreach ($mixed as $value) {
                if ( ! is_array_empty($value) ) {
                    return false;
                }
            }
        } elseif ( ! empty($mixed) ) {
            return false;
        }
    
        return true;
    }
    

    For example, given a multidimensional array:

    $products = array(
        'product_data' => array(
            0 => array(
                'title' => '',
                'description' => null,
                'price' => '',
            ),
        ),
    );
    

    You'll get a true value returned from is_array_empty(), since there are no values set:

    var_dump( is_array_empty($products) );
    

    View this code interactively at: http://codepad.org/l2C0Efab

    0 讨论(0)
  • 2020-11-30 10:51

    If your array is only one level deep you can also do:

    if (strlen(implode('', $array)) == 0)
    

    Works in most cases :)

    0 讨论(0)
  • 2020-11-30 10:52

    Assuming the array will always contain the same type of data:

    function TestNotEmpty($arr) {
        foreach($arr as $item)
            if(isset($item->title) || isset($item->descrtiption || isset($item->price))
                return true;
        return false;
    }
    
    0 讨论(0)
提交回复
热议问题