2017-10-28 96 views
1

我有這樣的代碼:循環在哪裏?

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" 
    } 
    } 
} 

哪裏是造成了圈外內存錯誤?

+9

'的foreach($ var當成$項) {$ response = month($ var); }'你正在使用'$ var'而不是'$ item'。 –

回答

1

你的錯誤是foreach內的month()功能:

$response = month($var); 

您應該運行在$item變量month()功能。

這裏是窮人編譯器試圖做:

  1. month()是通過$var
  2. 呼叫month()完全相同參數中的所有元素調用數組作爲$var
  3. 循環如通過。
  4. month()被稱爲...等

第4步是,同步驟1,所以編譯器英勇一直試圖運行你的代碼,這只是一遍又一遍運行相同的功能:「(

+0

那麼,編寫代碼以實現我的目標的正確方法是什麼? –

+0

我想獲得這樣的:'陣列(1){ [258] => 陣列(9){ [ 「recaudacion」] => 陣列(13){ [0] => 串(10) 「2017年10月7日」 } [ 「Contribuyentes跨省多邊」] =>數組 (13){ [0] => 串(10) 「2017年10月13日」 } } }' –

+0

即除當前月份以外的所有內容 –