试图简化我的PHP代码(序列化)

时间:2015-01-22 14:37:15

标签: php serialization

想法是隐藏一个元素,如果数据为空,我的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。

所以,我的问题是:一行可以替换上面的所有行,它会是什么?谢谢你的帮助!

3 个答案:

答案 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!