2017-01-22 10 views
0

私は配列に5つの日付($completion_date)を取得しようとしています私はリストの中に同じ$completion_dateの複数のインスタンスがある$completion_dateを渡すことを通してループしているリストがありますが、それぞれ配列$completion_dates = [];ですので、array_search($completion_date, $completion_dates);を使用して配列を検索するたびに、現在の$completion_dateが存在しない場合は配列に追加したい場合は、$completions$payoutsをそれぞれの配列の同じ位置に変更します。私の問題はarray_pushはすべての日付をプッシュしていないようですか?唯一?配列プッシュが関数で機能していませんか? PHP

そして、array_pushが入っているif文をチェックしました。これは、array_pushがそれを変更しようとしていないため、毎回else節を実行しています。

function sortResults($completion_date, $payout){ 
    global $completion_dates, $completions, $payouts; 

    $completion_dates = []; 
    $completions = [0,0,0,0,0]; // not in use 
    $payouts = [0,0,0,0,0]; // not in use 


    // check is $completion_date is in $completion_dates array and get position if so. 
    $position = array_search($completion_date, $completion_dates); 

    if ($position) { 
     // update $payouts and $completions @ same $position. 
    }else{ 
     // add $completion_date to $completion_dates array. 
     array_push($completion_dates, $completion_date); 
    } 

} 


var_dump($completion_dates); 

出力:array(1) { [0]=> string(10) "22/01/2017" }

しかし、出力すべき他の4つの日付"18/01/2017""19/01/2017""20/01/2017""21/01/2017」だけでなく

私はそう{"completion_date":"18\/01\/2017","0":"18\/01\/2017","payout":"13.20","1":"13.20"}ないような日付を脱出さをループしていたデータ?それが問題であれば本当にすべきではありませんか?

答えて

1

あなたの関数で毎回$ completion_datesを上書きするので、

function sortResults($completion_date, $payout) 
{ 
    global $completion_dates, $completions, $payouts; 

    $completion_dates = []; <----------------------- HERE 
    $completions = [0, 0, 0, 0, 0]; // not in use 
    $payouts = [0, 0, 0, 0, 0]; // not in use 


    // check is $completion_date is in $completion_dates array and get position if so. 
    $position = array_search($completion_date, $completion_dates); 

    if ($position) { 
     // update $payouts and $completions @ same $position. 
    } else { 
     // add $completion_date to $completion_dates array. 
     array_push($completion_dates, $completion_date); 
    } 

} 
+0

これはうまくいきません。また、関数の外部で開始するときにグローバル変数を宣言して、それらのトレースを保持するようにするのは明らかです。グローバル$ completion_dates = array(); – cpugourou

+0

外部の配列であっても、グローバルは機能しないようですか?上のコメントの助けを借りても。 – Benjamin

+0

http://pastebin.com/raw/RFuxAKyこれも機能しません。 (呼び出されたとき) – Benjamin

関連する問題