gpt4 book ai didi

php - 为什么 PHP Allowed memory size of 134217728 bytes 耗尽?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:38 24 4
gpt4 key购买 nike

我正在检查 CodeEval 中的一些问题并在 PHP 中遇到这个奇怪的错误。我没有用其他语言遇到过这样的事情,所以我不知道为什么会发生这种情况。不包括整个答案(请不要帮我找到解决方案,除了 PHP 为什么会这样),这是我遇到问题的地方:

for ($j = 0; $j < count($beauty); $j++) {
$temp = $beauty[$j];
$beauty[$j] = $beauty[$j+1];
$beauty[$j+1] = $temp;
}

基本上我已经计算了每个单独的字母,现在我要对包含这些值的数组进行排序,这样我就可以确定字符串的“美”。奇怪的是我得到了错误:

Allowed memory size of 134217728 bytes exhausted

运行上面的代码块时。更奇怪的是,当我删除 for 循环中的最后一行时,我不再收到错误。

for ($j = 0; $j < count($beauty); $j++) {
$temp = $beauty[$j];
$beauty[$j] = $beauty[$j+1];
}

会工作得很好,我只是不能那样解决问题。我在想也许有一些奇怪的事情,比如 PHP 通过引用传递数组中的值,或者通常通过引用传递变量的值,这可能会导致问题,但我认为情况并非如此。我不明白为什么将以下数组位置的值设置为我存储在 $temp 中的值会导致程序占用那么多内存。本例中的循环仅适用于计数为 19 的数组。我无法想象 19 个整数如何占用 128Mb 的内存空间,即使我们在每次传递时都进行交换也是如此。

有人知道为什么会这样吗?

最佳答案

你在这一行创建了一个无限循环:

$beauty[$j+1] = $temp;

因为在 $beauty 循环的每次迭代中,您都在添加一个新元素,您的循环将永远不会完成

关于php - 为什么 PHP Allowed memory size of 134217728 bytes 耗尽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31238514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com