2017-10-28 5 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) {$応答=月($ var); } 'あなたは' $ item'の代わりに '$ var'を使っています。 –

答えて

1

あなたのエラーがmonth()機能でforeach内にある:

$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 Convenioの多国"] => アレイ(13){ [0] => ストリング(10) "2017年10月13日" }} } ' –

+0

つまり、今月以外のすべてをフィルタリングします。 –

関連する問題