2016-09-19 12 views
0

私はいくつかのGoogleソリューションを見つけましたが、私の要件を満たしていません。 私は私が結果与えている配列、2つの配列を比較し、別の配列で0と一致するものと一致しないもの0

$current_week = self::CurrentWeekDateRange($s_date, $e_date); 

を持っている:

[0] => 2016-09-06 
    [1] => 2016-09-07 
    [2] => 2016-09-08 
    [3] => 2016-09-09 
    [4] => 2016-09-10 
    [5] => 2016-09-11 
    [6] => 2016-09-12 
    [7] => 2016-09-13 
    [8] => 2016-09-14 
    [9] => 2016-09-15 
    [10] => 2016-09-16 
    [11] => 2016-09-17 
    [12] => 2016-09-18 

は今、私の次の配列は、このようなものです:ユーザーログ$リターン配列

[0] => Array 
     (
      [date_log] => 2016-09-08 
      [total] => 15 
     ) 

    [1] => Array 
     (
      [date_log] => 2016-09-13 
      [total] => 30 
     ) 

    [2] => Array 
     (
      [date_log] => 2016-09-14 
      [total] => 400 
     ) 

いいえ、3人のユーザーは3回ユーザーログを印刷します。 は、だから私は何をしたい私はその試合は、それが別の配列でストアを取得し、その後、一致しない場合、それは私が0
私の問題を格納する与える場合は、私の最初のアレイ上に
date_logに一致するようにしたいです使用した二つのループは、ループ2 *倍値ループ1を印刷しているアリしかし、私は唯一の$ current_week

が、私はこのようにしようとした値とします

$current_week = self::CurrentWeekDateRange($s_date, $e_date); 

      $i = 0; 

      foreach ($current_week as $day){ 
       foreach ($returns as $return) { 
        if($day == $return['date_log']){ 
         $array_total_hours[$i]['total'] = $return['total']; 
         $array_total_hours[$i]['date_log'] = $return['date_log']; 
        } 
        else { 
         $array_total_hours[$i]['date_log'] = $return['date_log']; 
         $array_total_hours[$i]['total'] = 0; 
        } 

        $i++; 
       } 
      } 

print($array_total_hours); 

私はこのように私の結果をしたい:あなたはだけでなく、あらゆる可能なため、一度の$ current_weekあたりの合計値をASSINGする必要が

$current_week = self::CurrentWeekDateRange($s_date, $e_date); 

     $i = 0; 

     foreach ($current_week as $day){ 
      $value = 0; 
      $date = $return 
      foreach ($returns as $return) { 
       if($day == $return['date_log']){ 
        $value = $return['total']; 
       break; 
       } 
      } 

      $array_total_hours[$i]['total'] = $value; 
      $array_total_hours[$i]['date_log'] = $date; 

      $i++; 

     } 

     print($array_total_hours); 

[2016-09-06] => Array 
     (
      [date_log] => 2016-09-06 
      [total] => 0 
     ) 

    [2016-09-07] => Array 
     (
      [date_log] => 2016-09-07 
      [total] => 30 
     ) 

    [2016-09-08] => Array 
     (
      [date_log] => 2016-09-08 
      [total] => 400 
     ) 
    [2016-09-09] => Array 
     (
      [date_log] => 2016-09-09 
      [total] => 0 
     ) 
     . 
     . 
     . 
     . 
     . 
     . 
     . 
    [2016-09-18] => Array 
     (
      [date_log] => 2016-09-18 
      [total] => 0 
     ) 

答えて

1

これは仕事をする必要があります。

$current_week = self::CurrentWeekDateRange($s_date, $e_date); 

$finalResult = array(); 
foreach ($current_week as $date) { 
    $finalResult[$date] = array('date_log' => $date, 'total' => 0); 
} 

$dates = array_keys($finalResult); 
// not sure where this one comes from 
$nextArray = array(
    array('date_log' => '2016-09-08', 'total' => 15), 
    array('date_log' => '2016-09-13', 'total' => 30) 
    ); 

foreach ($nextArray as $return) { 
    $record = array('date' => '', 'total' => 0); 
    if (in_array($return['date'], $dates)) { 
     $finalResult[$return['date']]['total'] = $return['total']; 
    } 
} 
+0

はい、完璧です。 –

+1

thx ...私はより明確にするためにいくつかの行を置き換えました - 私はあなたの側で同じことをしたと思います。 – hummingBird

1

ソリューションで作業オーケー、それはこのように動作しますログ。