检查是否所有的数组项目都是空的PHP

我从表单添加项目数组,如果它们都是空的,我想执行一些validation,并添加到错误string。 所以我有:

$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>'; 

你可以使用内build的array_filter

如果没有提供callback,则所有input等于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>'; } 

用一个空胶将arrays内爆,并检查结果string的大小:

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

一个较老的问题,但认为我会popup我的解决scheme,因为它没有在上面列出。

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

你并不需要它。
你将分别validation这些字段,并通过完成这个过程,你可以判断数组是否为空(或者包含无效值,这是相同的)

你可以委托检查一个非常简单的function:

 // 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"] ); 

没有testing,但你得到的逻辑:)

 $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; 

你也将不得不改变你的数组的值封装为双引号。