2016-11-26 60 views
0

我已經試過這in_array不工作的INT大於十

$randtxt = fopen('random.txt','r'); 
$zawa = fread($randtxt, 8192); 
$tt = str_split($zawa); 


do { 

    $numer = rand(8, 11); 

} while (in_array($numer, $tt)); 


echo<<<END 
$numer 
END; 

Random.txt包含在這個例子:

"8", "9", "10", 

唯一一個解決方案,這個腳本最後是11,但也有10次(我不知道爲什麼),有時候是10,但從來沒有1,2,3 ... 9.它不適用於大於10的int。

I我已經試過了,但它甚至不能工作

$randtxt = file_get_contents('random.txt'); 
$inarr = unserialize($randtxt); 

$number = 11;  

if (in_array($number, $inarr, true)) 
{ 
    echo "yup"; 
} 
else 
{ 
    echo "nope"; 
} 

    $numberout = serialize($number); 
    $out = file_put_contents('random.txt', $numberout, FILE_APPEND); 
+0

嘗試[mt_rand(http://php.net/manual/en/function.mt-rand.php) – Thamilan

+0

你分割你的字符串轉換成字符數組。您沒有任何數組元素長於1個字符。所以每兩個或更多的數字號碼將不會被發現。 – Rizier123

回答

1

您是否嘗試輸出$tt -array?它包含了這一點: Array ([0] => " [1] => 8 [2] => " [3] => , [4] => [5] => " [6] => 9 [7] => " [8] => , [9] => [10] => " [11] => 1 [12] => 0 [13] => " [14] => , [15] =>)

難怪10有時顯示了...你需要修復你如何作出這樣的陣列,首先你需要的內容適當拆分,並刪除空格(使用TRIM()),雙引號和逗號。

下面的代碼工作:

<?php 
$randtxt = file('random.txt'); 
$tt = str_replace(',','',str_replace('"','',explode(' ',$randtxt[0]))); 

do { 
    $numer = rand(8, 11); 
} while (in_array($numer, $tt)); 


echo<<<END 
$numer 
END; 

?>