我正在从表单添加一个项目数组,如果所有项目都是空的,我想执行一些验证并添加到错误字符串。所以我有:
$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>';
答案 0 :(得分:150)
您可以使用内置的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>';
}
答案 1 :(得分:16)
使用空胶水内爆数组并检查结果字符串的大小:
<?php if (strlen(implode($array)) == 0) echo 'all values of $array are empty'; ?>
答案 2 :(得分:7)
一个较旧的问题,但我认为我已经在我的解决方案中弹出,因为它没有在上面列出。
function isArrayEmpty($array) {
foreach($array as $key => $val) {
if ($val !== '')
return false;
}
return true;
}
答案 3 :(得分:3)
你真的不需要它 您将分别验证这些字段,并通过完成此过程,您可以判断数组是否为空(或包含无效值,这是相同的)
答案 4 :(得分:0)
您对$ array的定义不正确并且有单引号。它应该是:
$array = array( 'RequestID' => $_POST["RequestID"],
'ClientName' => $_POST["ClientName"],
'Username' => $_POST["Username"],
'RequestAssignee' => $_POST["RequestAssignee"],
'Status' => $_POST["Status"],
'Priority' => $_POST["Priority"] );
答案 5 :(得分:0)
简化使用这种方式:
$array = []; //target array
$is_empty = true; //flag
foreach ($array as $key => $value) {
if ($value != '')
$is_empty = false;
}
if ($is_empty)
echo 'array is empty!';
else
echo 'array is not empty!';
答案 6 :(得分:-1)
我有同样的问题,但想分别检查数组中的每个元素,看看哪一个是空的。这比预期的要困难,因为您需要在单独的数组中创建键值和实际值以检查并响应空数组元素。
print_r($requestDecoded);
$arrayValues = array_values($requestDecoded); //Create array of values
$arrayKeys = array_keys($requestDecoded); //Create array of keys to count
$count = count($arrayKeys);
for($i = 0; $i < $count; $i++){
if ( empty ($arrayValues[$i] ) ) { //Check which value is empty
echo $arrayKeys[$i]. " can't be empty.\r\n";
}
}
结果:
Array
(
[PONumber] => F12345
[CompanyName] => Test
[CompanyNum] => 222222
[ProductName] => Test
[Quantity] =>
[Manufacturer] => Test
)
数量不能为空。
答案 7 :(得分:-2)
没有测试但是你得到了逻辑:)
$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>';
}
答案 8 :(得分:-4)
这非常简单:
foreach($array as $k => $v)
{
if(empty($v))
{
unset($array[$k]);
}
}
$show_error = count($array) == 0;
您还必须将数组值的封装更改为双引号。