【发布时间】:2015-11-18 15:57:54
【问题描述】:
情况是我有一个包含 15000 条记录的数组,每条记录有 67 个键值对值。现在我想使用 trim、str_replace 或 type-cast 更新所有值,但我得到一个 php 内存泄漏的错误。我不明白为什么会这样。我的数组格式是这样的
Array
(
[0] => Array
(
[id] => 1
[parent_id] => 1
[login] => 123
[login_nickname] =>
[password] => 123
[subuser] => 0
[subuser_id] =>
[email] => usersemail@email.com
),
[1] => Array
(
[id] => 1
[parent_id] => 1
[login] => 123
[login_nickname] =>
[password] => 123
[subuser] => 0
[subuser_id] =>
[email] => anotheruser@email.com
)
)
在这个数组中,我有一些字段,如 cmets、地址,我希望它们修剪、str_replace,一些字段如分支(数组)我想在对象中进行类型转换。但是当我这样做时,我会收到这样的内存超出错误
致命错误: var/www/html/myproject/application/models/Member.php 中允许的内存大小为 134217728 字节已用尽(尝试分配 49 字节)上线28
仅供参考:当我使用这些函数(trim、str_replace、type-cast 等)在循环中回显这些值时,循环工作正常并成功打印其值。
我不明白是什么问题,请帮助我。
我的 foreach 循环是这样的
foreach($member_list as $index=>$member){
foreach($member as $key=>$value){
$member_list[$index][$key] = str_replace(array("\n", "\t", "\r"), " ", trim($value));
}
}
这个错误发生在这个循环中。
【问题讨论】:
-
您需要出示您的代码。
-
它来自数据库吗?把它分块
-
您可以使用 memory_get_usage 来查看构建阵列时的使用情况 (php.net/manual/en/function.memory-get-usage.php)。
-
@Dagon,是的,这个数组来自数据库,但在这个问题中,我只是展示了我的数组的格式。
-
@Barmar,我添加了一部分代码
标签: php loops memory-leaks variable-declaration