dongtan8979 2017-09-18 10:44
浏览 47
已采纳

如何匹配数组中的值并在php中推送数组

Here below is my code.

I'm trying to plot graph values using the below array. On the dates array i have all 30 days in the array. I have another array called pending_date and approved_date. I need to match the date.Add the key and value for the matching key(date) array. Can u tell me where I'm going wrong ?

$approved_date = array('2017-09-01'=>'1','2017-09-02' => '2', '2017-09-03' => '4');
$pending_date = array('2017-09-01'=>'2');
$rejected_date = array();

Tried Code

        $myYearMonth = date('Y-m');
        $start = new DateTime(date('Y-m-01', strtotime($myYearMonth)));
        $end = new DateTime(date('Y-m-t', strtotime($myYearMonth)).' +1 day');
        $diff = DateInterval::createFromDateString('1 day');
        $periodStart = new DatePeriod($start, $diff, $end);

        foreach ( $periodStart as $dayDate ){
         $dates[]['period'] = $dayDate->format( "Y-m-d" );
        }

        foreach( $pending_date as $key => $value ){
          $data_key = array_search( $key, $dates );
          if( $data_key !== false ) $dates[ $data_key ] = $value;
        }

Expected Output

{"period": "2017-09-01", "approved": 1, "pending": 2, "rejected": 0},
{"period": "2017-09-02", "approved": 2, "pending": 0, "rejected": 0},
{"period": "2017-09-03", "approved": 4, "pending": 0, "rejected": 0}
  • 写回答

1条回答 默认 最新

  • doukuipei9938 2017-09-18 10:53
    关注

    Try something like this:

    $approved_date = array('2017-09-01'=>'1','2017-09-02' => '2', '2017-09-03' => '4');
    $pending_date = array('2017-09-01'=>'2');
    $rejected_date = array();
    
    $dates = array();
    //$periods = array_unique(array_merge(array_keys($approved_date), array_keys($pending_date), array_keys($rejected_date)));
    $periods = array(); // fill $periods how you like
    for($i=1; $i<=30; $i++) {
        $periods[] = '2017-09-' . str_pad($i, 2, '0', STR_PAD_LEFT);
    }
    foreach ($periods as $period) {
        $dates[] = array(
            'period' => $period,
            'approved' => isset($approved_date[$period]) ? $approved_date[$period] : 0,
            'pending' => isset($pending_date[$period]) ? $pending_date[$period] : 0,
            'rejected' => isset($rejected_date[$period]) ? $rejected_date[$period] : 0,
        );
    }
    
    echo json_encode($dates);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?