当我尝试在PHP中循环逗号分隔列表时,我得到了一个非常奇怪的结果。
它有时只输出其中的一些,似乎没有合理的理由说明为什么它不会遍历所有这些,我不能为我的生活弄清楚究竟是什么造成了它。
我的代码是:
//pids = &pids=1,2,3,6,7,9
$pids = $_GET['pids'];
$photoIdArray = explode(",", $pids);
for($i = 0; $i <= count($photoIdArray); $i++) {
foreach($photoIdArray as $j){
if($i == $j){
echo "{$j}";
}
}
}
// result = 1236
这仅用于测试,因此我不会检查输入以防止漏洞利用,以及目前还没有。
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:3)
将2循环for
和foreach
结合起来对于像这样的事情来说是过度的
请尝试仅使用foreach
$pids = "1,2,3,6,7,9";
$photoIdArray = explode(",", $pids);
foreach($photoIdArray as $value)
{
echo $value;
}
输出
123679
答案 1 :(得分:0)
这是因为您循环遍历您的值并检查$ i是否与值相同。你应该检查
if ($photoIdArray[$i] == $j) {
而不是
if ($i == $j) {
这就是它不起作用的原因,但你仍然应该使用Baba的方法。
答案 2 :(得分:0)
我同意Dusan,Baba&amp;但是要回答实际的问题:
这里没有什么奇怪的事情发生。 i从0循环到6(尽管数组只有索引0..5),你将i与数组的VALUES进行比较,范围从1到9.当然,只有值1到6匹配,因为我从未超过6岁。
编辑:Asad和Sietse更快。