Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组键存在时循环_Php_Arrays_While Loop_Key - Fatal编程技术网

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;
}