2011-10-10 85 views
0
<?php 
    $n = 3; 
    $x = array(); 
    function Try1($i){ 
     foreach(array(0,1) as $j){ 
      $x[$i] = $j; 
      if($i==$n-1){ 
       print_r($x); 
      }else{ 
       Try1($i+1); 
      } 
     } 
    } 

    Try1(0); 
?> 

的所有二進制串我寫了一段代碼以上,但是當我跑我得到一個錯誤:致命錯誤:用盡134217728個字節允許存儲器大小(試圖分配24個字節)中BinaryStrings。 PHP的線上。生成長度爲n

我寫了一個類似的版本在Python中,它的工作,你能幫我嗎?謝謝^^。

回答

2

變量$x$n與您的其他代碼不在同一範圍內。它們在函數之外定義並且不會傳入,因此它們不在函數內部。 $n-1函數內部因此等於-1並且您的代碼將運行到無限循環。這就是爲什麼你a)打開錯誤報告和b)使用<>而不是==的條件。

+0

非常感謝你,我改成'函數Try1($ i,$ x,$ n)',它工作得很好。但是,如何將$ x和$ n更改爲全局範圍: - ? – hungneox

+1

你沒有。真的,你沒有。 (你可以搜索如何做,但你真的不應該。) – deceze

+0

對不起,我現在很尷尬:( – hungneox