我有一个提交大量输入的表单......
<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中处理这个问题最有效,最安全的方法是什么。目前我有一长串的if语句如此......
if ($_REQUEST['searchTag_happy']) $searchTagArray[] = "happy";
if ($_REQUEST['searchTag_sad']) $searchTagArray[] = "sad";
if ($_REQUEST['searchTag_ambivalent']) $searchTagArray[] = "ambivalent";
etc
.
.
.
但这似乎非常冗长。还有更好的选择吗?
提前感谢您的帮助。
答案 0 :(得分:2)
foreach($_REQUEST as $k=>$req)
{
if(strpos($k,"searchTag_")!==false && $req)
{
$searchTagArray[]=$req;
}
}
通过这种方式,您遍历REQUEST数组并仅获取包含“searchTag_”且值为1的键的值
答案 1 :(得分:0)
Mck89几乎是正确的 - 获得所需的数组:
foreach($_REQUEST as $k=>$req)
{
if(strpos($k,"searchTag_")!==false && $req)
{
$searchTagArray[]=substr($k,10);
}
}
但是考虑到数组的编号不相关,那么它意味着可能无法优化结果数据结构 - 更好的解决方案可能是:
$searchTagArray[substr($k,10)]=1;
或者只是使用array_filter()返回非零值而不转换键。
下进行。