Tom*_*Tao 6 php arrays array-map
当我测试时array_map()功能时。有一个很奇怪的现象。
正常大小的数组
$array = range(1, 100000);
echo memory_get_usage();
array_map(function($value) {}, $array);
echo memory_get_usage();
Run Code Online (Sandbox Code Playgroud)
结果
8649024
8649024
Run Code Online (Sandbox Code Playgroud)
很明显,内存大小是相等的。
但对于大数组
$array = range(1, 10000000);
echo memory_get_usage();
array_map(function($value) {}, $array);
echo memory_get_usage();
Run Code Online (Sandbox Code Playgroud)
结果
84319040
Run Code Online (Sandbox Code Playgroud)
致命错误:第 6 行 G:\phpStudy\WWW\testSpeed.php 中允许的内存大小 134217728 字节已耗尽(尝试分配 36 字节)
为什么?我到处都有搜索答案。但似乎很少有人有这个问题。如果有人可以帮助我吗?谢谢你!
array_map()将回调函数应用于原始数组中的每个元素。因此该函数执行数组中的每个元素,并尝试为结果分配内存。当内存使用限制(每个数组元素+数组元素执行函数)超过分配的内存时,就会出现此错误。在此示例中,数组映射不必对内存耗尽执行任何操作。range()当它尝试将内存分配给试图创建的数组时,该函数会抛出错误