Как объединить два массива и сделать отображения по порядку

223
22 марта 2017, 19:06

Пытаюсь объединить два массива первый массив

 $begin = mktime(0, 0, 0, date('m'), 1, date("Y"));
    $end = mktime(0, 0, 0, date('m'), date("t"), date("Y"));
    $day = array();
    for($i = $begin; $i <= $end; $i += 86400)
    {
        if(date("w", $i) != 0 && date("w", $i) != 6)
            $day[] = array(
            'label' =>   date("Y-m-d", $i)
            );
    }

получаю массив такого вида

Array
    (
        [0] => Array
        (
            [label] => 2017-03-01
        )
[1] => Array
    (
        [label] => 2017-03-02
    )
[2] => Array
    (
        [label] => 2017-03-03
    )
[3] => Array
    (
        [label] => 2017-03-04
    )
[4] => Array
    (
        [label] => 2017-03-05
    )
[5] => Array
    (
        [label] => 2017-03-06
    )
[6] => Array
    (
        [label] => 2017-03-07
    )
[7] => Array
    (
        [label] => 2017-03-08
    )
[8] => Array
    (
        [label] => 2017-03-09
    )
[9] => Array
    (
        [label] => 2017-03-10
    )
[10] => Array
    (
        [label] => 2017-03-11
    )
[11] => Array
    (
        [label] => 2017-03-12
    )
[12] => Array
    (
        [label] => 2017-03-13
    )
[13] => Array
    (
        [label] => 2017-03-14
    )
[14] => Array
    (
        [label] => 2017-03-15
    )
[15] => Array
    (
        [label] => 2017-03-16
    )
[16] => Array
    (
        [label] => 2017-03-17
    )
[17] => Array
    (
        [label] => 2017-03-18
    )
[18] => Array
    (
        [label] => 2017-03-19
    )
[19] => Array
    (
        [label] => 2017-03-20
    )
[20] => Array
    (
        [label] => 2017-03-21
    )
[21] => Array
    (
        [label] => 2017-03-22
    )
[22] => Array
    (
        [label] => 2017-03-23
    )
[23] => Array
    (
        [label] => 2017-03-24
    )
[24] => Array
    (
        [label] => 2017-03-25
    )
[25] => Array
    (
        [label] => 2017-03-26
    )
[26] => Array
    (
        [label] => 2017-03-27
    )
[27] => Array
    (
        [label] => 2017-03-28
    )
[28] => Array
    (
        [label] => 2017-03-29
    )
[29] => Array
    (
        [label] => 2017-03-30
    )
[30] => Array
    (
        [label] => 2017-03-31
    )

)

второй массив из базы

  Array
    (
        [0] => Array
        (
            [value] => 1
        [order_status_id] => 1
        [date_added] => 2017-03-18
    )
[1] => Array
    (
        [value] => 1
        [order_status_id] => 1
        [date_added] => 2017-03-21
    )

)

Как сделать что бы даты выводились по порядку ,

пример

 Array
    (
        [18] => Array
        (
            [label] => 2017-03-18
            [value] => 1
        )

        [20] => Array
    (
        [label] => 2017-03-21
        [value] => 1
    )............

Так весь массив а value было только там где даты совпадают

Answer 1

Нашел решения может кому то пригодиться

      $begin = mktime(0, 0, 0, date('m'), 1, date("Y"));
    $end = mktime(0, 0, 0, date('m'), date("t"), date("Y"));
    $day = array();
    $format_day = array();
    for($i = $begin; $i <= $end; $i += 86400)
    {
        $day[] = array(
            'label' =>   date("Y-m-d", $i),
        );
        $format_day[] = array(
            'label' => date("d/m", $i)
        );
    }

    // new
    $array_date = $day;

    // второй массив из базы
    $orders_status_new = $this->model_account_order->getOrdersCountStatusNew();
    $array_new = array();
    foreach ($orders_status_new as $status_order){
        $array_new[] = array(
            'value' => $status_order['order_status_id'],
            'label' =>$status_order['date_added']
        );
    }
    foreach($array_date as $index => $value){
        $array_date[$index]['value'] = null;
    }
    $searchArray = array_column($array_date,'label');
    foreach($array_new as $value){
        $key = array_search($value['label'],$searchArray);
        if(!$key){
            echo sprintf("value %s not found<br/>",$value['label']);
            continue;
        }
        $array_date[$key]['value']=$value['value'];
    }
    echo "<pre>";
    print_r($array_date);
Answer 2

Можно воспользоваться функцией usort и отсортировать массив по дате.

Пример: http://stackoverflow.com/questions/6401714

READ ALSO
Можно это перевести?

Можно это перевести?

Можно это перевести с php на html?

267
Как добавлять в корзину товары с помощью ajax?

Как добавлять в корзину товары с помощью ajax?

Подскажите, как настроить добавление товара в корзину с помощью ajax? В магазине на основе плагина woocommerce используются стандартные шаблоны...

262
JSON и PHP, передача на modx

JSON и PHP, передача на modx

Добрый деньПроблема - судя по консоли и алерту - я отправляю json

311