这是否会产生某种永久循环? PHP不会正常执行

时间:2011-08-22 20:08:56

标签: php html http post

这会创建某种永久循环吗?我试过发布数据,页面根本不会加载,包含表单的页面只是在表单提交上“加载”。

for($i = 1; $i = 5; $i++) {
    $country[$i] = $_POST['country_'.$i];
    $redirect[$i] = $_POST['redirect_'.$i];
}

var_dump($country);
var_dump($redirect);

这是我的表格;

<form action="query.php" method="post" id="geoui">
<div id="input1" class="clonedInput">
<select name="country_1" class="px460s">
<option selected="selected" value="auto">Choose country to set rule for..</option>
<option>United Kingdom</option>
<option>Canada</option>
</select>
<input name="redirect_1" type="text" class="px460" value="http://">
<div class="break"></div>
</div><div id="input2" class="clonedInput">
<select name="country_2" class="px460s">
<option selected="selected" value="auto">Choose country to set rule for..</option>
<option>United Kingdom</option>
<option>Canada</option>
</select>
<input name="redirect_2" type="text" class="px460" value="http://">
<div class="break"></div>
</div><div id="input3" class="clonedInput">
<select name="country_3" class="px460s">
<option selected="selected" value="auto">Choose country to set rule for..</option>
<option>United Kingdom</option>
<option>Canada</option>
</select>
<input name="redirect_3" type="text" class="px460" value="http://">
<div class="break"></div>
</div><div id="input4" class="clonedInput">
<select name="country_4" class="px460s">
<option selected="selected" value="auto">Choose country to set rule for..</option>
<option>United Kingdom</option>
<option>Canada</option>
</select>
<input name="redirect_4" type="text" class="px460" value="http://">
<div class="break"></div>
</div><div id="input5" class="clonedInput">
<select name="country_5" class="px460s">
<option selected="selected" value="auto">Choose country to set rule for..</option>
<option>United Kingdom</option>
<option>Canada</option>
</select>
<input name="redirect_5" type="text" class="px460" value="http://">
<div class="break"></div>
</div>
</form>

非常感谢任何建议或答案;)!

5 个答案:

答案 0 :(得分:6)

for($i = 1; $i = 5; $i++) {

您错过了<

for($i = 1; $i <= 5; $i++) {

顺便说一句,你可以使用表单元素名称的数组语法,这样你就不会使用$_POST['country_'.$i]来访问发布的数据,而是$_POST['country'][$i]$_POST[$i]['country']

<select name="query[1][country]" class="px460s">
<input name="query[1][redirect]" type="text" class="px460" value="http://">

然后在你的PHP脚本中:

foreach($_POST['query'] as $item) {
    $country = $item['country'];
    $redirect = $item['redirect'];
}

答案 1 :(得分:3)

是的,它会的。 $ i = 5始终为真,因为5总是可以分配给$ i。

更改为:

for($i = 1; $i < 5; $i++) {
    $country[$i] = $_POST['country_'.$i];
    $redirect[$i] = $_POST['redirect_'.$i];
}

答案 2 :(得分:3)

是的,确实如此:

for($i = 1; $i = 5; $i++) {

中间子句($i = 5)是一个赋值 - 它使$i等于5,然后返回true,这是一个真值,导致循环继续。试试这个:

for($i = 1; $i <= 5; $i++) {

答案 3 :(得分:2)

您没有在for函数中设置限制(检查)。它会循环。应该是这样的:

for($i = 1; $i < 5; $i++) {

答案 4 :(得分:1)

尝试将assignment运算符更改为comparison运算符:

for($i = 1; $i <= 5; $i++)

而不是:

for($i = 1; $i = 5; $i++)