2013-04-03 41 views
0

我有以下代碼,我無法弄清楚它有什麼問題。我提供一個數組作爲參數,並且is_array($ primes)返回true。我在這裏錯過的任何東西?爲foreach()提供了無效的參數,is_array()返回true

function generate_primes($max) 
{ 
$i = 4; 
$primes = [2, 3]; 


while($i < $max) 
{ 
    $isPrime = true; 

    foreach($primes as $value) 
    { 
     if($i % $value == 0) 
     { 
      $isPrime = false; 
      break; 
     } 

    } 
    if($isPrime) 
     $primes = $i; 

    $i++; 
} 

return $primes; 

} 
+3

'$素數= [2,3];'無效,使用'$ primes = array(2,3)' – 2013-04-03 22:16:56

+0

@Akam:如果他使用PHP 5.4或更高版本,則短陣列語法是有效的。參考文獻:[1](http://php.net/manual/en/migration54.new-features.php),[2](http://php.net/manual/en/language.types.array.php ) – BigBagel 2013-04-03 22:24:26

+1

這是不正確的; '$ primes = [2,3];'由更新版本的PHP支持。 – 2013-04-03 22:24:43

回答

2

$primes = $i;顯示你找到你的第一任,5這不再是在這一點上一個陣列中後,你重新分配$primes變量。

相反,使用這樣的:

if($isPrime) 
    array_push($primes,$i); 
+0

非常感謝,這已經解決了這個問題。 – 2013-04-03 22:23:50

1

使用PHP數組類型:

$primes = array(2, 3); 

再後來,加入了新總理,以數組的時候:

array_push($primes, $i);