How to check if a multi-dimensional array only contains empty values?

前端 未结 3 1286
野趣味
野趣味 2021-02-06 19:20

I looked around and can\'t quite find the answer for this, so I\'m wondering if I contain an array such as this..

$array[\'foo\'][\'bar\'][1] = \'\';
$array[\'fo         


        
相关标签:
3条回答
  • 2021-02-06 19:32

    If you wanted to check to see if all of the values where populated you can use

     if(call_user_func_array("isset", $array['foo']['bar']))
    

    For what you want to do though you could use array reduce with a closure

     if(array_reduce($array, function(&$res, $a){if ($a) $res = true;}))
    

    Note this will only work in php 5.3+

    0 讨论(0)
  • 2021-02-06 19:35

    $array['foo']['bar'] isn't empty because it's actually array(1=>'',2=>'',3=>'',4=>'').

    You would need to do a foreach loop on it to check if it is indeed all empty.

    $arr_empty = true;
    foreach ($array['foo']['bar'] as $arr) {
        if (!empty($arr)) {
            $arr_empty = false;
        }
    }
    //$arr_empty is now true or false based on $array['foo']['bar']
    
    0 讨论(0)
  • 2021-02-06 19:43

    A short alternative would be:

    if (empty(implode($array['foo']['bar']))) {
      // is empty
    }
    

    Note that some single values may be considered as empty. See empty().

    0 讨论(0)
提交回复
热议问题