2016-03-28 14 views
0

我想用rand()函數生成隨機數,並確保它們不在excArray中。0在空數組中發現

如果我做print_r(array_values($excArray))返回Array ([0] =>)這意味着它是空的(是嗎?)

但是當我做in_array($randInt, $excArray)($ randInt是= 0),或者乾脆echo in_array(0, $excArray);返回1

這裏是我的代碼:

function generateCode($char, $int, $prefix, $len, $lenMin, $lenMax, $exclude, $array){ 
    do{ 
     $code = ""; 
     $i = 0; 
     $excArray = explode(",", $exclude); 
     echo in_array(0, $excArray); 
     exit(); 
     while($i++ < $int){ 
      do { 
       $randInt = rand(0,1); 
        echo $randInt; 
      }while(in_array($randInt, $excArray)); 
      $code .= $randInt; 
     } 

那麼爲什麼echo in_array(0, $excArray);回聲1

謝謝!

+0

不,數組(0 =>)意味着你有一個索引值爲0的值,它只是空的。但它會因爲存在而返回真實。 – VikingBlooded

+1

爲什麼如果你不使用它們,你的函數有那麼多參數?另外,從我所看到的你只能生成0到1之間的數字。你的代碼看起來太複雜了,這樣一個簡單的任務。 –

+0

@PedroLobito我正在使用它們。我只是發佈了我遇到問題的代碼。該代碼用於生成長的唯一代碼。 –

回答

3

Array ([0] =>)意味着它打印爲空字符串,可能nullfalse或...空字符串一個項目。使用var_dump而不是print_r可查看有關其實際類型的更多信息。從那裏你可能會遇到與字符串比較數字時與類型轉換有關的時髦行爲...可以使用in_array(.., .., true)嚴格比較,或者找出你的空項目在該數組中,並避免首先創建它。

+0

謝謝。 $ exclude參數直接來自空白輸入字段。使用嚴格的比較工作。我會盡快將這個答案標記爲正確的。 –