内存不足(已分配908066816)(尝试分配805306376字节)PHP错误消息

时间:2018-04-22 09:21:41

标签: php arrays xampp

我创建了一个PHP算法和这个算法的代码,它使字母和数字的每个排列都是这样的:

    <?php
set_time_limit(0);
ini_set('max_execution_time',-1);
ini_set('memory_limit', '-1'); 
function florg ($n, $elems) {
    if($n > 0){
        $tmp_set = array();
        $res = florg($n-1, $elems);
        foreach ($res as $ce) {
            foreach ($elems as $e) {
                array_push($tmp_set, $ce . $e);
            }
        }
        return $tmp_set;
    }
    else{
        return array('');
    }
}
$elems = array('q','w','e','r','t','y','u','i','o','p','a','b','c','d','f','g','h','j','k','l','z','x','c','v','b','n','m','1','2','3','4','5','6','7','8','9','0');
$v = FlOrG(7, $elems);
foreach($v as $child) {
    print $child . "\n";
}
?>

它的基本功能是使用键盘上所有可能的字母和数字组合制作7个字符的文本。

因为这个程序有点大,我在页面顶部添加了这3行:

set_time_limit(0);
ini_set('max_execution_time',-1);
ini_set('memory_limit', '-1'); 

现在每当我在XAMPP上运行此程序时,都会收到以下错误消息:

致命错误:第11行的内存不足(已分配908066816)(尝试分配805306376字节)

这是第11行:

  

array_push($ tmp_set,$ ce。$ e);

所以我不明白这个错误和这一行之间的关系!我也在我的网络托管服务上在线运行这个程序,但是再次收到了同样的错误消息。

我认为代码看起来很好,因此我的问题是如何运行此程序?这段代码中array_push()有什么问题?

我真的很感谢你们的任何帮助或想法,因为我已经有好几个星期的问题......

1 个答案:

答案 0 :(得分:0)

您可以尝试将array_push($array, $value)替换为具有相同效果的$array[] = $value符号,例如:

foreach ($res as $ce) {
    foreach ($elems as $e) {
        $tmp_set[] = $ce . $e;
    }
}

和变量$v = florg(7, $elems);

在这7中是一个很大的,并且它是相互组合的值,所以,首先尝试添加小数而不是逐个检查。像

florg(1,$elems);
florg(2,$elems);
florg(3,$elems);

等等。

希望这会对你有所帮助