我有这段代码:
function filterVencimientos ($arrayFull) {
$filtered = array_filter($arrayFull, 'month');
var_dump($filtered);
return $filtered;
}
function month ($var) {
$response = false;
if (is_array($var)) {
foreach ($var as $item) {
$response = month($var);
}
} else {
$date = date('Y-m');
$response = (stripos($var, $date) !== false);
}
return $response;
}
function getFiltered () {
$arrayFull = getVencimientosPorPerfil();
$arrayFiltered = filterVencimientos($arrayFull);
return $arrayFiltered;
}
然后返回:
Fatal error: Out of memory (allocated 4194304) (tried to allocate 262144 bytes) in C:\xampp\htdocs\app\miramonteapp\api\yscript.php on line 244
我正在尝试通过这个数组:
array(1) {
[258]=>
array(9) {
["recaudacion"]=>
array(13) {
[0]=>
string(10) "2017-01-07"
[1]=>
string(10) "2017-02-07"
}
["Contribuyentes Convenio Multilateral"]=>
array(13) {
[0]=>
string(10) "2017-01-13"
[1]=>
string(10) "2017-02-13"
}
}
}
导致内存不足错误的循环在哪里?
答案 0 :(得分:1)
您的错误位于foreach
函数中的month()
内:
$response = month($var);
您应该在month()
变量上运行$item
函数。
这是糟糕的编译器试图做的事情:
month()
数组调用$var
$var
month()
。month()
被称为......等。步骤4与步骤1相同,因此编译器勇敢地继续尝试运行代码,这只是一遍又一遍地运行相同的功能:'(