检查是否所有的数组项目都是空的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;
你也将不得不改变你的数组的值封装为双引号。