0

我有以下代码,我无法弄清楚它有什么问题。我提供一个数组作为参数,并且 is_array($primes) 返回 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;

}
4

2 回答 2

2

$primes = $i;表明您$primes在找到第一个素数 5 后重新分配了变量。此时它不再是数组。

相反,使用这个:

if($isPrime)
    array_push($primes,$i);
于 2013-04-03T22:17:34.063 回答
1

使用 php 数组类型:

$primes = array(2, 3);

然后,在向数组添加新素数时:

array_push($primes, $i);
于 2013-04-03T22:20:03.857 回答