вот кой-че сваял PHP: <?php /* emptyM($var1, $var2, ..., $varN) retutn true, if one of vars is empty */ function emptyM(){ if(func_num_args()==0) { return true; } $args = func_get_args(); foreach($args as $arg){ if(empty($arg)){ return true; } } return false; } /* emptyA($array); return true, if one of values in $array is empty */ function emptyA($array){ foreach($array as $value){ if(is_array($value)) { if(empty($value)) return true; if(emptyA($value)) return true; } else { if(empty($value)) return true; } } return false; } ?> c 1 ф-ией все нормлаьно. Вот результат работы второй: PHP: <?php $a = array( "aa"=>array( "aa"=>'' ), "bb"=>3, "cc"=>"aaa" ); $b = array(); var_dump(empty($a)); //bool(false) var_dump(empty($b)); //bool(true) var_dump(emptyA($a)); //bool(true) var_dump(emptyA($b)); //bool(false), а должно быть bool(true) ?> помогите исправить
там второй массив пустой. хотя и существует. и $value у тебя null. а empty для таких переменных вроде и должен false возвращать. что и происходит
в том то и дело, что пробовал и function emptyA($array){ foreach($array as $value){ if(is_array($value)) { if(!count($value)) return true; if(emptyA($value)) return true; } else { if(empty($value)) return true; } } return false; } и через sizeof. И все равно вот такая хня. upd: PHP: <?php function emptyA($array){ if(empty($array)) return true; foreach($array as $value){ if(is_array($value)) { if(empty($value)) return true; if(emptyA($value)) return true; } else { if(empty($value)) return true; } } return false; } ?> проблема решена
А так? PHP: <? function emptyA($array){ if (!count($array)) return true; foreach($array as $value){ if(is_array($value)) { if(empty($value)) return true; if(emptyA($value)) return true; } else { if(empty($value)) return true; } } return false; } ?>