2012-10-14 19 views
2

這個想法是爲了獲得所有可以在6/49彩票上玩的可能組合。 對於前兩個數字它的作品。何時,我爲第三個數字添加條件:Undefined variable: b。我不明白爲什麼。我使用echo來檢查程序是否正常工作。Verry小PHP程序不能正常工作

這是代碼。我希望有人能向我解釋我做錯了什麼。謝謝。

for ($i=1 ; $i<50 ; $i++) 
{ 
    $a=$i; 
    for ($j=1 ; $j<50 ; $j++) 
    { 
     if ($i!=$j) 
     { 
      $b=$j; 
     } 
     for ($k=1 ; $k<50 ; $k++) 
     { 

      if ($k!=$j && $k!=$i) 
      { 
       $c=$k; 
       echo "$a $b $c<br>"; 
      } 
     } 
    } 
} 
+1

告訴我們什麼語言。修復格式。 – bmargulies

+0

PHP,我猜,不是嗎? – Aubin

+0

它也可能是一個shell腳本。 – askmish

回答

1

在第一次迭代$i == $j,所以$b永遠不會初始化。您可以通過擴展if修復它覆蓋內環:

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

    $a=$i; 
    for ($j=1 ; $j<50 ; $j++) 
    { 

    if ($i!=$j) 
    { 
     $b=$j; 

     for ($k=1 ; $k<50 ; $k++) 

     { 

     if ($k!=$j && $k!=$i) 
     { 
      $c=$k; 
      echo "$a $b $c<br>"; 
     } 
     } 
    } 
    } 
} 
+1

是的,它的工作原理!非常感謝! :我明白 – Point89

0

當$ i == $ j時$ b是未定義的。我想你只想在$ i!= $ j時運行inner for循環。請注意,這個問題通常是用函數遞歸來解決的(然後你不需要硬編碼這6個數字)。

希望幫助,

  • 約翰內斯
0

你爲什麼不使用6嵌套的for循環....

我不明白你所使用的語言,所以我會把它放在一些僞碼...

for (a=1; x<50-5; a++){ 
    for (b=a+1; x<50-4; b++){ 
    for (c=b+1; x<50-3; c++){ 
     for (d=c+1; x<50-2; d++){ 
     for (e=d+1; x<50-1; e++){ 
      for (f=e+1; x<50; f++){ 
      print (a,b,c,d,e,f); 
      } 
     } 
     } 
    } 
    } 
}