Проверка наличия всех элементов массива пустым PHP

Я добавляю массив элементов из формы, и если все они пустые, я хочу выполнить некоторую проверку и добавить строку ошибки. Так что я:

$array = array( 'RequestID' => '$_POST["RequestID"]', 'ClientName' => '$_POST["ClientName"]', 'Username' => '$_POST["Username"]', 'RequestAssignee' => '$_POST["RequestAssignee"]', 'Status' => '$_POST["Status"]', 'Priority' => '$_POST["Priority"]' ); 

И тогда, если все элементы массива пусты, выполните:

 $error_str .= '<li>Please enter a value into at least one of the fields regarding the request you are searching for.</li>'; 

Вы можете просто использовать встроенный array_filter

Если обратный вызов не предоставляется, все записи ввода, равные FALSE (см. Преобразование в логическое), будут удалены.

Так можно сделать это в одной простой строке.

 if(!array_filter($array)) { echo '<li>Please enter a value into at least one of the fields regarding the request you are searching for.</li>'; } 

взорвать массив с пустым клеем и проверить размер результирующей строки:

 <?php if (strlen(implode($array)) == 0) echo 'all values of $array are empty'; ?> 

Более старый вопрос, но я подумал, что я поплю свое решение, поскольку оно не было перечислено выше.

 function isArrayEmpty($array) { foreach($array as $key => $val) { if (!empty($val)) return false; } return true; } 

вам это действительно не нужно.
Вы будете проверять эти поля отдельно, и, завершив этот процесс, вы можете определить, был ли массив пустым (или содержит недопустимые значения, что то же самое)

Вы можете делегировать проверку достаточно простой функции:

 // returns true if $arr has a // value for _any_ of the $keys function check_if_any( $arr, $keys ) { foreach( $keys as $key ) { if( $arr[$key] ) return true; } return false; } $has_any = check_if_any( $_POST, array( "Username", "RequestAssignee", ... ) ); 

Работа для меня тоже

 if(!array_sum($array)){ //Values are empty do something } 

Поздний поздний ответ, но, вероятно, самый быстрый и лучший способ сделать это:

 $array = array("demoKey1" => "", "demoKey2" => "2"); if(count(array_flip($array)) > 1){ // keys not empty // for example count is 2 } 

Ваше определение $ array неверно и имеет одинарные кавычки. Он должен гласить:

 $array = array( 'RequestID' => $_POST["RequestID"], 'ClientName' => $_POST["ClientName"], 'Username' => $_POST["Username"], 'RequestAssignee' => $_POST["RequestAssignee"], 'Status' => $_POST["Status"], 'Priority' => $_POST["Priority"] ); 

НЕ ИСПЫТАНО, НО ВЫ получите логику 🙂

 $error = 0; foreach ($array as $k => $v){ if (empty($v)) { $error++; } } if ($error == count($array)) { $error_str .= '<li>Please enter a value into at least one of the fields regarding the request you are searching for.</li>'; } 

это довольно просто:

 foreach($array as $K => $v) { if(empty($v)) { unset($array[$k]); } } $show_error = count($array) == 0; с foreach($array as $K => $v) { if(empty($v)) { unset($array[$k]); } } $show_error = count($array) == 0; 

вам также придется изменить инкапсуляцию для значений массива в двойные кавычки.