我必须检查,说20个变量。 &安培;我真的很困惑这两种方法,以检查所有是否非空。
第一个是你的基本方法:
if($var1!= null && $var2!= null && $var3!= null && $var4!= null...) {
// Do this
}
第二种方法是使用我从here得到的数组:
$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了? 另外,请好好解释一下,因为我还是个新手。
由于
答案 0 :(得分:3)
第二次尝试没问题,但这一行:
if (isset($$var) && strlen($$var) == 0)
可能是:
if (empty($$var))
..取决于您的需求。如果使用empty()
,则已将变量设置为:
将被视为空
答案 1 :(得分:2)
假设您有10个这样的vars,其命名约定与您的问题相同。你可以做到
<?php
for ($i = 1; $i <= 10; $i++) {
$var = "var$i";
if (!empty($$var)) {
// this one at $i is set
} else {
// not set
}
}
您可以更改循环的上限以计算您拥有的变量数。无需先手动生成名称数组。但是如果你有这么多具有相同名称的变量并且只是索引不同那么你最好首先使用数组。
答案 2 :(得分:1)
您可以使用empty功能。
function noneEmpty($array) {
foreach ($array as $variable)
if (empty($variable))
return false;
return true;