我必须检查,比如说20个变量。,这两种方法检查是否所有都是非空的,我真的很困惑。
第一个是基本方法:
if($var1!= null && $var2!= null && $var3!= null && $var4!= null...) {
// Do this
}
第二种方法是使用我从这里得到的数组
$vars = array('var1','var2','var3','var4');
$errors = array();
foreach ($vars as $var => $label)
{
if (isset($$var) && strlen($$var) == 0)
$errors[$var] = $label . 'is empty';
}
if(is_array($errors) && count($errors) > 0)
{
echo 'Please fix the following errors: ';
echo '<ul><li>' . implode('</li><li>', $errors) . '</li></ul>';
}
else
{
//Do this
}
现在,就像我之前说的,我的情况中的变量大约是20。如果变量的数量只有20个,你认为哪种方法(如果有更多,我很乐意听到它们)会更好(和更像php的方法,如果我可以添加) ?另外,请解释一下,因为我还是个新手。
谢谢
第二次尝试是可以的,但是这一行:
if (isset($$var) && strlen($$var) == 0)
可能:if (empty($$var))
. .取决于你的需要。如果使用empty()
,则设置为:
- "(空字符串)
- 0(0为整数)
- 0.0(0为float)
- "0"(0作为字符串) 零
- 假
- array()(空数组)
- $ var;(已声明的变量,但没有值)
将被视为空
假设您有10个这样的变量,它们的命名约定与您的问题相同。你可以写
<?php
for ($i = 1; $i <= 10; $i++) {
$var = "var$i";
if (!empty($$var)) {
// this one at $i is set
} else {
// not set
}
}
你可以改变循环的上限来计算你所拥有的变量的数量。无需首先手工生成名称数组。但是如果你有很多相同名称的变量只是索引不同那么你最好一开始就使用数组
可以使用空函数
function noneEmpty($array) {
foreach ($array as $variable)
if (empty($variable))
return false;
return true;