Php 数组键存在时循环
我有一个来自表单的数组,其中包含“块”信息,如Php 数组键存在时循环,php,arrays,while-loop,key,Php,Arrays,While Loop,Key,我有一个来自表单的数组,其中包含“块”信息,如 $array = array(id1 => 1 title1 => this title id2 => 2 title2 => this title 2) 我试着像这样在数组中循环 $num = 1; $posid = "id" . $num; while (array_key_exists($posid, $_POST)) {
$array = array(id1 => 1
title1 => this title
id2 => 2
title2 => this title 2)
我试着像这样在数组中循环
$num = 1;
$posid = "id" . $num;
while (array_key_exists($posid, $_POST)) {
echo $posid . "<br>";
$num++;
}
$num=1;
$posid=“id”$号码;
while(数组\键\存在($posid,$\ POST)){
echo$posid。“
”;
$num++;
}
但我一直被困在一个无限循环中。我哪里出错了?你处于一个无限循环中,因为如果它存在于数组中,你就永远不会从数组中移除它,也永远不会更新被询问变量的值 因此,每次计算
while
循环时,它都将是true
,因为重复测试的条件相同
是否要从数组中删除$posid?你想更新它吗?你的问题是你没有在循环中重新定义
$posid
。您应该这样做:
$num = 1;
$posid = "id" . $num;
while (array_key_exists($posid, $_POST)) {
echo $posid . "<br>";
$num++;
$posid = "id" . $num;
}
您可能更适合在输入字段中使用数组访问符号
<input name="id[]" ... />
在递增
$num
之后,需要更新$posid
:
$num = 1;
$posid = "id" . $num;
while (array_key_exists($posid, $_POST)) {
echo $posid . "<br>";
$num++;
$posid = "id" . $num;
}
$num=1;
$posid=“id”$号码;
while(数组\键\存在($posid,$\ POST)){
echo$posid。“
”;
$num++;
$posid=“id”。$num;
}
如果使用数组符号命名表单字段,可能会更好,例如
。然后,$\u POST['id']
将是一个数组,而不是单独的元素。$posid在循环中不会更改-1:您从未更改过$posid
。。。你的echo
应该说得很清楚。@LightnessRacesinOrbit我不会因为他犯了一个新手错误而投他的票。这是一个新开发人员提出的公平问题+1@Matthew当前位置我对他没有进行任何基本调试投了反对票。没有证据表明有研究工作,这个问题对其他任何人都没有帮助。它“太本地化了”——要求免费的个人帮助调试一些代码。这不是堆栈溢出的目的。Stack Overflow是一个关于编程语言和代码的有趣问题的网站。谢谢。@Matthew:投票支持这种东西。我想他是想在循环中完成$posid
赋值,所以它会得到更新的$num
@Barmar,不管他想做什么。。。。他的无限循环是因为他没有改变被询问的变量。超级感谢你们帮助了我的很多@barmar你们的回答帮助了我,我会给你们打勾的,可以这么说,但是mike的措辞稍微好一点就是你们都给了我一些东西来做谢谢
foreach ($_POST['id'] as $id) {
...
}
$num = 1;
$posid = "id" . $num;
while (array_key_exists($posid, $_POST)) {
echo $posid . "<br>";
$num++;
$posid = "id" . $num;
}