2011-08-22 58 views
1

这是否会创建某种永久循环?我试过发布数据,并且页面根本不会加载,包含表单的页面只是在表单提交时保持“加载”。这是否创造了某种永久循环? PHP不会正确执行

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> 

任何意见或答案将不胜感激;)!

回答

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']; 
} 
+0

感谢,这种低级错误:(一旦定时滴,我会接受你的答案 – Avicinnian

2

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

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

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

更改为类似:

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

仅供参考,你的推理是有点瑕疵'$ I = 0'永远是假的,即使赋值成功,赋值表达式的值就是被赋值的值 - 赋值并不总是评估为真,因为它们成功了,它们只在赋值为truthy时才评估为真 – cdhowie

+0

好点!感谢澄清。 – Brad

1

尝试改变assignment运营商的comparison操作:

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

代替:

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

是的,它的作用:

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

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

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