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任何值都是可能的(字符串、实例等)