Php 对多个变量使用if(!empty),但如果其中一个变量不为';t空

Php 对多个变量使用if(!empty),但如果其中一个变量不为';t空,php,variables,Php,Variables,我正在使用下面的 if (!empty($data['var_1']) && !empty($data['var_2']) && !empty($data['var_3']) && !empty($data['var_4']) && !empty($data['var_5']) && !empty($data['var_6']) && !empty($data['var_7'])

我正在使用下面的

if (!empty($data['var_1']) 
 && !empty($data['var_2']) 
 && !empty($data['var_3']) 
 && !empty($data['var_4'])
 && !empty($data['var_5']) 
 && !empty($data['var_6']) 
 && !empty($data['var_7']) 
 && !empty($data['var_8']) 
 && !empty($data['var_9'])) {
//BLOCK HERE
}
基本上,我试图实现的是,如果所有变量都为空,则隐藏块。如果8或更少为空,则显示块


我哪里出错了?

你想要的是
|
而不是
&
。仅当块全部不为空时,才会显示该块。我认为可能有更好的方法来实现这一点,比如
array\u filter

如果所有变量都不是空的,那么您编写的代码将显示块。如果希望在任何变量不为空时显示它,请使用或代替,并将
&&
替换为
|


好吧,您可以使用一个循环和一个
$isok
变量:

$isok = false;
for($i=1; $i<10; $i++) {
    if( !empty($data['var_'.$i])) {
        $isok = true;
        break; // no need to continue looping
    }
}
if( $isok) {
    // BLOCK HERE
}
$isok=false;
对于($i=1;$i您也可以尝试

$data = array_filter($data); // remove all empty value form array

if (count($data)) {
    // do your thing
}
您可以使用:

if ( count(array_values($data)) ) {
    //BLOCK HERE
}
将&&(和)替换为| |(或)


我没有正确理解你的问题。你能再给我一些想法吗?$var_x是一个数组,还是它们完全是独立的变量?这些数据是从一个表单中获取的吗?多一些背景知识会有帮助的。非常感谢!非常好用!
if (!empty($data['var_1']) 
 || !empty($data['var_2']) 
 || !empty($data['var_3']) 
 || !empty($data['var_4'])
 || !empty($data['var_5']) 
 || !empty($data['var_6']) 
 || !empty($data['var_7']) 
 || !empty($data['var_8']) 
 || !empty($data['var_9'])) {
//BLOCK HERE
}
if (empty(array_values($data))) { /* will return you true if all variables are empty*/}