PHP可以';t设置范围(0,200万)--内存错误

PHP可以';t设置范围(0,200万)--内存错误,php,memory,Php,Memory,我需要为我当前的项目设置一个从100万到200万的数组。问题是,当我尝试执行时,我得到了一个内存错误 编辑: 这是一个我已经解决的问题。然而,我正在重构代码以更快地完成它(最初的时间约为90秒) 我用埃拉托斯烯筛来标记从0到2毫升的素数。 EndEdit 显然,如果这不起作用,其余的代码也就不起作用了 有什么想法吗 另外,我尝试了ini_集('memory','30M'),但这也不起作用 编辑 感谢所有指出记忆需要比我最初预期的大得多的人。我通过加入ini_集('memory_limit',

我需要为我当前的项目设置一个从100万到200万的数组。问题是,当我尝试执行时,我得到了一个内存错误

编辑:

这是一个我已经解决的问题。然而,我正在重构代码以更快地完成它(最初的时间约为90秒)

我用埃拉托斯烯筛来标记从0到2毫升的素数。
EndEdit


显然,如果这不起作用,其余的代码也就不起作用了

有什么想法吗

另外,我尝试了
ini_集('memory','30M'),但这也不起作用

编辑

感谢所有指出记忆需要比我最初预期的大得多的人。我通过加入
ini_集('memory_limit','4000000000')解决了这个问题//大约3.73千兆比特


EndFinalEdit

查看php.ini文件


有一个设置
内存\u限制
——它可能会阻止您执行这个荒谬的范围

范围(2000000)需要超过160M的内存,而范围(1000000000000)需要超过一半的内存

从php.ini:

);脚本可能消耗的最大内存量(128MB) ;
内存限制=256M

如果您可以在任意位置设置并从任意索引获取数据,那么就没有顺序数组点

// completely acceptable in php
$data[2000000] = 2000000; 
如果要在控制台中解决此euler问题(我通常会这样做),则使用
-d memory\u limit=4G
参数运行php文件。它将使用4GB内存运行

php -d memory_limit=4G /path/to/euler/problem.php 

顺便说一句,你可以创建一些魔术类,可以模仿你有一个这样的大数组。:)


让我们从头开始,你想做什么?为什么你需要这么大的范围?你想完成什么?也许有更好的方法。不知道来源的质量,但是在这里。这意味着它需要68个字节,这意味着您的阵列需要超过100mb的容量。@Nanne..谢谢您提供的信息..我不知道!对于prime测试,您只需要
sqrt
您的长度。幸运的是,我已经将控制台设置为运行java,但是谢谢您的建议。另外,我喜欢你幽默的语气XD。
php -d memory_limit=4G /path/to/euler/problem.php 
class MySuperCoolLongIntArray{
    private $data=array();
    public get_int($index){
        return isset($this->data[$index])? $this->data[$index]: 0;
    }
    public set_int($index, $value){
        $this->data[$index]=$value;
    }
}