我想检查关联数组中的空值,然后使用其键创建另一个数组

时间:2019-01-31 17:39:39

标签: php

我从用户输入表单中有一个名为$ row的关联数组,我想检查其任何值是否为空,如果有任何值为空,我想创建另一个名为$ error []的关联数组并将其推为空值放入此关联数组中,但我想使用空数组的键作为错误数组的名称,以便我可以知道哪些字段为空。

例如行数组如下$ row = array('name'=>'martin','tel'=> 023,'experience'=>'high');

我要创建一个如下的错误数组,以检查姓名,电话或经历是否为空。

如果我发现例如name和tel为空,我希望错误数组如下$ error ['name'] ='name不能为空' $ error ['tel'] ='tel不能为空'

我有很多要遍历的输入值。

这是我尝试过的代码,但是出现未定义偏移量的错误。

function is_empty($row){
    $errors= []; 
    $countRows = count($row); 
for($i=0; $i<=$countRows;$i++){
 if(empty(trim($row[$i]))){
    $i = (string)$i;
    $errors[$i] =  $i ."is empty";
 }
}
   return $errors;
}

$errors = is_empty($row);

      if(!empty($errors)){

          return $errors;
      }

print_r($errors);

我没有从中得到一个关联数组。

3 个答案:

答案 0 :(得分:0)

使用简单的array_filter()怎么样?它会使用值为空的array元素,然后使用单个foreach循环来打印或显示错误消息。希望这会有所帮助:)

<?php
$row = array ('name'=>'martin','tel'=>null, 'experience'=> 'high','password'=>'','occupation'=>'');
$missing_values = array_filter($row, function($value) { return $value == ''; });
$error = [];
print_r($missing_values);
foreach($missing_values as $k=>$v){
    $error[$k] = "$k can't be empty";
}

print_r($error);
?>

输出:

Array ( 
        [tel] => tel can't be empty
        [password] => password can't be empty
        [occupation] => occupation can't be empty
     )

演示: https://3v4l.org/akRoB

答案 1 :(得分:0)

您可以检查键中的值是否为空以及键是否已设置。

function is_empty($row)
{
    $errors=array();
    foreach ($row as $key => $value) {
        if(!isset($row[$key]) && $row[$key] == '') {
            $x[$key] = $key." is empty";
        }
    }
    print_r($errors);
}

答案 2 :(得分:0)

尝试以下操作:

View

它将同时消除您的空白并填写您的消息。输出:

  

Array([name] => name是必需的,不能为空[tel] => tel是   必填,不能为null)