【问题标题】:Most efficient, safe way of dealing with a large number of $_REQUEST variables in php在 php 中处理大量 $_REQUEST 变量的最有效、最安全的方法
【发布时间】:2010-01-26 10:58:04
【问题描述】:

我有一个提交大量输入的表单...

<input type="hidden" name="searchTag_happy" value="0" />
<input type="hidden" name="searchTag_sad" value="0" />
<input type="hidden" name="searchTag_ambivalent" value="0" />
etc
.
.
.

这些输入的值属性可以是“0”或“1”。

我想使用此信息创建一个数组“searchTags”,其中包含值设置为“1”的所有属性。

我想知道在 php.ini 中处理这个问题的最有效、最安全的方法是什么。目前我有一长串这样的 if 语句......

if ($_REQUEST['searchTag_happy']) $searchTagArray[] = "happy";
if ($_REQUEST['searchTag_sad']) $searchTagArray[] = "sad";
if ($_REQUEST['searchTag_ambivalent']) $searchTagArray[] = "ambivalent";
etc
.
.
.

但这似乎很冗长。有没有更好的选择?

提前感谢您的帮助。

【问题讨论】:

    标签: php arrays forms


    【解决方案1】:
    foreach($_REQUEST as $k=>$req)
    {
       if(strpos($k,"searchTag_")!==false && $req)
       {
           $searchTagArray[]=$req;
       }
    }
    

    通过这种方式,您可以遍历 REQUEST 数组并仅获取键包含“searchTag_”且 value=1 的值

    【讨论】:

      【解决方案2】:

      Mck89 几乎是正确的——得到所需的数组:

      foreach($_REQUEST as $k=>$req)
      {
         if(strpos($k,"searchTag_")!==false && $req)
         {
             $searchTagArray[]=substr($k,10);
         }
      }
      

      但鉴于数组的编号无关紧要,这意味着可能未优化结果数据结构 - 更好的解决方案可能是:

             $searchTagArray[substr($k,10)]=1;
      

      或者只使用 array_filter() 来返回非零值而不转换键。

      C.

      【讨论】:

      • 感谢您的回复。关于这一点:“但鉴于数组的编号不相关,那么它反而意味着结果数据结构可能没有被优化。”感谢您的提醒。我修改了代码以编译字符串而不是数组,如下所示: $searchTags .= substr($k,10).";";
      猜你喜欢
      • 2014-01-27
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多