Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对空变量进行多次检查,以减少冗长/冗长_Php - Fatal编程技术网

Php 对空变量进行多次检查,以减少冗长/冗长

Php 对空变量进行多次检查,以减少冗长/冗长,php,Php,我发现自己经常检查多个变量是否为空。在某些情况下,它可能导致丑陋的代码。我觉得可以把它缩短。但我的解决方案似乎都不是最佳实践 任务:让我们在遇到空值时引发异常 $x = 1; $y = "foo"; $z = 3; $q = 0; $p = null; //this can get too lengthy if (empty($x) || empty($y) || empty($z) || empty($q) || empty($p)) { throw new \Exception("

我发现自己经常检查多个变量是否为空。在某些情况下,它可能导致丑陋的代码。我觉得可以把它缩短。但我的解决方案似乎都不是最佳实践

任务:让我们在遇到空值时引发异常

$x = 1;
$y = "foo";
$z = 3;
$q = 0;
$p = null;

//this can get too lengthy
if (empty($x) || empty($y) || empty($z) || empty($q) || empty($p)) {
    throw new \Exception("Empty value");
}
我能做的最好的解决方案是使用数组。但我个人觉得很难看

foreach ([$x, $y, $z, $q, $p] as $value) {
    if (empty($value)) {
        throw new \Exception("Empty value");
    }
}
在检查时,我会在一行中使用某种全局函数:

function has_empty_element(array $subject)
{
    foreach ($subject as $value) {
        if (empty($value)) {
            return true;
        }
    }
    return true;
}

if (has_empty_element([$x, $y, $z, $q, $p])) {
    throw new \Exception("Empty value");
}

有没有办法使它成为一行而没有额外的功能?我的“阵列方法”算是好的吗?谢谢。

我相信你的方法很好。
我不是说这是一个更好的方法,但我给你一个选择

如果您计算变量(在数组中)并与相同的数组过滤器进行比较,您将看到是否有一个或多个为空

很可能这比你的foreach慢,但至少可以是一行

if(count([$x, $y, $z, $q, $p]) !=  array_filter([$x, $y, $z, $q, $p])){
    echo "empty variables";
}

它总是数字还是字符串/书本?@Andreas任何值都是可能的(字符串、实例等)