【问题标题】:Trying to simplify my php code (serialize)试图简化我的 php 代码(序列化)
【发布时间】:2015-01-22 14:37:14
【问题描述】:

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

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

【问题讨论】:

  • Vick 提供的第一个解决方案有效(但他删除了答案,我想知道为什么。谢谢 Vick!他的解决方案是:foreach($GLOBALS as $key => $value) { if(!trim ($value)) { echo ""; } }

标签: php serialization


【解决方案1】:

您不应该使用$GLOBALS。您可能应该做的是将所有这些项目放入一个数组中,而不是作为一系列 240 个不同的变量。

所以构建一个数组,我们称之为$s_array

您可以轻松地遍历数组以输出:

foreach($s_array as $value) {
    echo '<style type="text/css">' . $value . ' {display:none}</style>';  
}

或者更好的是,您定义一个 CSS 类并停止所有重复样式块的疯狂。然后将该类应用于您当前通过 id 分配 CSS 样式的所有这些 DOM 元素。

【讨论】:

  • @user3371049 是的,它不适用于您的代码。我建议对您当前使用一系列$s* 变量污染全局空间的方法进行重大简化。如果您只是将一个类应用到 DOM 元素以添加此 CSS 样式和/或将这些变量作为这些变量放入数组中,那么您将不需要任何这些。
  • @user3371049 所以底线是,您可以轻松地替换所有这些,只需定义一个像这样的基于类的样式:.s_elements {display:none;} 并将class='s_elements" 添加到每个s* DOM创建的元素。
【解决方案2】:

你可以使用 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;

?>

【讨论】:

    【解决方案3】:
    foreach($GLOBALS as $key => $value) {
    if(!trim($value)) {
        echo "<style type='text/css'>#$key{display:none}</style>";
    }
    }
    

    这个解决方案是由 Vick 提供的,尽管他删除了它(我不知道为什么)。它工作得很好。它取代了 240 行 php 代码!谢谢维克!

    【讨论】:

    • 如果除了 $s* 变量之外,您还有全局范围内的变量,您也会为它们呼应样式,因此请谨慎使用。
    • 迈克,你是对的,我刚刚遇到了这个问题,并解决了它。我不是程序员,所以有时我很难完全理解这些解释!所以我不明白你上面提供的解释......我举个例子:)我有能力实现它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多