想法是隐藏一个元素,如果数据为空,我的PHP代码(下面)可以工作,但我总共有240行,我认为必须有一种方法来简化。
以下是我的代码示例:
if (trim($GLOBALS["s101"])){} else{echo "<style type='text/css'>#s101{display:none}</style>";};
if (trim($GLOBALS["s102"])){} else{echo "<style type='text/css'>#s102{display:none}</style>";};
if (trim($GLOBALS["s103"])){} else{echo "<style type='text/css'>#s103{display:none}</style>";};
if (trim($GLOBALS["s104"])){} else{echo "<style type='text/css'>#s104{display:none}</style>";};
if (trim($GLOBALS["s105"])){} else{echo "<style type='text/css'>#s105{display:none}</style>";};
if (trim($GLOBALS["s106"])){} else{echo "<style type='text/css'>#s106{display:none}</style>";};
上述元素的共同特征是类:.sections。
所以,我的问题是:一行可以替换上面的所有行,它会是什么?谢谢你的帮助!
答案 0 :(得分:1)
您不应该使用$GLOBALS
。您应该做的是将所有这些项目放入一个数组中,而不是作为一系列240个不同的变量。
所以建立一个数组,让我们称之为$s_array
。
您可以轻松地遍历数组以输出:
foreach($s_array as $value) {
echo '<style type="text/css">' . $value . ' {display:none}</style>';
}
或者更好的是,你定义了一个CSS类并停止了所有重复样式块的疯狂。然后将该类应用于当前通过id分配CSS样式的所有DOM元素。
答案 1 :(得分:0)
你可以使用for循环 以及以下:
<?php
for ($i=1;$i<10;$i++):
if (trim($GLOBALS["s10".$i])){}
else{echo "<style type='text/css'>#s10".$i."{display:none}</style>";};
endfor;
?>
答案 2 :(得分:0)
foreach($GLOBALS as $key => $value) {
if(!trim($value)) {
echo "<style type='text/css'>#$key{display:none}</style>";
}
}
这个解决方案是由Vick提供的,尽管他删除了它(我很奇怪为什么)。它运作得非常好。它取代了240行PHP代码!谢谢Vick!