2013-06-12 4 views
0

Вот код:Бесконечная загрузка проблема PHP

<? 
$C1=array("a"=>1,"b"=>2); 
$C2=array("z"=>1,"s"=>2); 
$C3=array("x"=>1,"h"=>2); 
$C4=array("a"=>1,"c"=>2); 
$keywords=array("x","z","h"); 
for($i=2;$i<4;$i++) 
{ 
    $i="C".$i; 
    $array=$$i; 
    foreach($keywords as $val) 
    { 
     if(isset($array[$val])) 
     { 
      echo $i." -> $val<br>"; 
     } 
    } 
} 
?> 

Он должен показать:

C2 -> z 
C3 -> x 
C3 -> h 

Если я пишу $i=2 вместо цикла for() пишет C2 -> z, как это должно быть.

Но я должен использовать цикл for(), который генерирует бесконечную загрузку.

Почему? Где проблема?

+3

вы нарушаете переменную цикла ('$ i =" C ". $ i;') ... – Yoshi

+0

Проверьте это: http: // stackoverflow. ком/вопросы/16851078/почему-The-ответ-это-15-здесь/16851120 – BlitZ

ответ

1

Внутри цикла вы переназначаете переменную $i со строкой. После этого он не проходит проверку границы цикла. Вместо этого используйте другую переменную:

<? 
$C1=array("a"=>1,"b"=>2); 
$C2=array("z"=>1,"s"=>2); 
$C3=array("x"=>1,"h"=>2); 
$C4=array("a"=>1,"c"=>2); 
$keywords=array("x","z","h"); 
for($i=2;$i<=4;$i++) 
{ 
    $a="C".$i; 
    $array=$$a; 
    foreach($keywords as $val) 
    { 
     if(isset($array[$val])) 
     { 
      echo $a." -> $val<br>"; 
     } 
    } 
} 
?> 

Кроме того, стоит отметить, что ваш цикл будет работать только в два раза (на $ я равен 2 и 3), так как вы сравниваете $i<4. Поэтому в моем коде я изменил это на $i<=4, чтобы исправить это.

1

На первый $ I является числом, а затем $ я ++ приращения, как ожидается , но тогда вы измените $ я на "C". $ Я

так, что $ я = "C2" теперь я думаю, что + +, применяемый к значению C2, никогда не делает это> 4

Смежные вопросы