我正在使用以下
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或更小为空,则显示该块。
我哪里错了?
答案 0 :(得分:1)
您希望||
不是&&
。仅当它们都不为空时才会显示该块。我认为可能有更好的方法可以做到这一点,例如array_filter
。
答案 1 :(得分:1)
好吧,你可以使用循环和$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
}
如果您更改var_
部分或想要不同的数字范围,这也更容易编辑。
答案 2 :(得分:1)
您也可以尝试
$data = array_filter($data); // remove all empty value form array
if (count($data)) {
// do your thing
}
答案 3 :(得分:0)
如果所有变量都不为空,您编写的代码将显示该块。如果您希望在任何变量不为空时显示,请将&&
替换为||
,使用OR代替AND。
<?php
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
}
答案 4 :(得分:0)
您可以使用array_values():
if ( count(array_values($data)) ) {
//BLOCK HERE
}
答案 5 :(得分:0)
替换&amp;&amp; (AND)与|| (OR)
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
}
答案 6 :(得分:0)
if (empty(array_values($data))) { /* will return you true if all variables are empty*/}