如何在PHP中检查所有变量是否为空

时间:2018-01-17 06:22:28

标签: php

我必须检查天气所有变量都不是空的 我正在使用以下方式。

if(empty($first_name) || 
   empty($last_name) || 
   empty($email) || 
   empty($password) || 
   empty($contact_no) || 
   empty($cnic)) {
    echo json_encode(array('condition' => 'error','data' => 'Please fill all inputs')); 
    exit;
}

上面的代码工作但这看起来有点奇怪。是否有更短或更专业的方式来检查所有输入? TA

3 个答案:

答案 0 :(得分:4)

像这样:

$array = [
   'first_name' =>  'John',
    'last_name' => 'Doe',
    'email' => '',
];

if(count($array) != count(array_filter($array))){
    echo 'some rows are empty';
}

如果您想知道哪些特定字段为空,则可以使用array_diff_key

$array = [
   'first_name' =>  'John',
    'last_name' => 'Doe',
    'email' => '',
];

$filled = array_filter($array);

if(count($array) != count($filled)){
    $empty = array_diff_key($array, $filled);
    echo 'field(s) '.implode(', ', array_keys($empty)).' are empty';
}

OUPUTS:

field(s) email are empty

显然你可以改进错误字符串,或者你有什么。所以在你的情况下我会做这样的事情

if(count($array) != count($filled)){
    $empty = array_keys(array_diff_key($array, $filled));
    $last = '';
    if(count($empty) > 1 ){
       $last = ' and '.array_pop($empty);
    }
    $fields = implode(', ', $empty).$last; 
    echo json_encode(array('condition' => 'error','data' => 'Please fill in '.$fields));
}

所以它应该输出这样的东西:

Please fill in email

Please fill in first_name and email

Please fill in first_name, last_name and email

你甚至可以这样做:

$empty = array_map(function($item){
   return ucwords(str_replace('_', ' ', $item));
}, $empty);

如果您想获得幻想,可以使用first_name并将其更改为First Name

所以......把所有这些都集中起来:

$array = [
   'first_name' =>  '',
    'last_name' => '',
    'email' => '',
];

$filled = array_filter($array);

if(count($array) != count($filled)){
    $empty = array_map(function($item){
        return ucwords(str_replace('_', ' ', $item));
    },array_keys(array_diff_key($array, $filled)));
    $last = '';
    if(count($empty) > 1 ){
       $last = " and '".array_pop($empty)."'";
    }
    $fields = "'".implode("', '", $empty)."'".$last; 
    echo json_encode(['condition' => 'error','data' => 'Please fill in '.$fields]);
}

输出:

{"condition":"error","data":"Please fill in 'First Name', 'Last Name' and 'Email'"}

你可以看到它here live

现在它确切地告诉他们他们需要什么字段,而不是一般的错误。

答案 1 :(得分:0)

您可以为此目的使用数组,也可以对相同的代码执行另一种方法,如下所示。

if($first_name || $last_name || $email || $password || $contact_no || $cnic){
echo json_encode(array('condition' => 'error','data' => 'Please fill all inputs'));    
exit; }

这样可行,因为它与检查变量的空白相同。但如果未定义变量,则会失败

答案 2 :(得分:0)

isset()函数

isset()函数用于检查是否设置了变量。如果已使用unset()函数取消设置变量,则将不再设置该变量。如果测试变量包含NULL值,则isset()函数返回false。

  

版本:(PHP 4及以上版本)

<强>语法:

[BHD#60556]

在我的选择中,我们可以做到

isset(variable1, variable2......)