2013-04-03 72 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); 
相关问题