我在内部数据库上有一个表格,公众没有使用或访问过。
表单包含从SQL数据库生成的项目列表。 每个项目都有一个复选框,用于选择是否要将其带到下一页。 它永远不是一定数量的项目,取决于访问哪个客户/表。 复选框名称是在SQL select while循环中生成的,因此复选框名称值会增加“num1,num2,num3”等。
在表单输出中我有:
foreach ($_get as $result){
echo $result;
}
这与完整的%_get数组的值相呼应。
我想将其过滤为仅显示包含“num”的$ _get值,因此它不会为$ _get数组中的任何其他内容循环。
例如,我想要它:
echo %_get['num1];
echo %_get['num2];
echo %_get['num3];
/* etc.. looping the amount of times the string "num" is used and not looping if for
example it didn't contain "num" like %_get['egg'] if it existed */
我希望这是有道理的。
如果有更好的方法,我愿意接受任何解决方案或替代方法。
非常感谢, 灰
答案 0 :(得分:1)
你只是想做这样的事情:
foreach($_GET as $key=>$val){
if(false !== stripos($key, 'num')){
echo $_GET[$key];
}
}
这循环遍历整个_GET数组并检查该键是否包含字符串num。我使用了不区分大小写的stripo,如果您希望它区分大小写,请将stripos
替换为strpos
。
检查显式false的原因是stripos返回字符串位置,如果找到该字符串,该位置可以为零。 PHP中的零值松散等于false。通过使用!==
代替!=
,我们只匹配结果,如果它不是实际的假(即根本找不到)。
请注意,您确实需要对现实代码进行某种输入过滤和输出转义。
答案 1 :(得分:1)
foreach循环可以选择$ _GET数组项的键和值,因此您可以检查键是否以 num 开头。
foreach($_GET as $key => $value) {
if(strpos($key, 'num') === 0) {
echo $value;
}
}
我强烈建议过滤和验证任何输入(GET,POST等),特别是在生产系统上。 http://www.php.net/manual/en/function.filter-input.php为初学者。
答案 2 :(得分:0)
试试这个:
foreach ($_GET as $key=>$result){
if(substr($key, 0, 3) == 'num') {
echo $result;
}
}
循环所有$ _GET全局数组,并仅过滤那些以'num'开头并回显值的数据。
答案 3 :(得分:0)
您可以将array_filter与回调一起使用来过滤掉数组中的项目。
http://uk3.php.net/array_filter
例如:
function even($var)
{
// returns whether the input integer is even
return(!($var & 1));
}
$array = array(6, 7, 8, 9, 10, 11, 12);
print_r(array_filter($array, "even"));
$filteredArray = array_filter($array, "even");
这将基于奇数/偶数过滤掉。您可以将回调更改为套件。