Создать ключ для повторяющихся значений и одного значения в ассоциативном массиве - PullRequest
0 голосов
/ 25 мая 2018

Этот тип массива мне нужен.

Array
(
[2018-03-25] => Array
(
    [0] => Array
        (
            [loyalty_transcation_id] => 33
            [user_id] => 58
            [bill_copy_image_path] => 03252018_182712.jpg
            [create_date] => 2018-03-25 19:27:12
            [name] => bernd koch
        )

    [1] => Array
        (
            [loyalty_transcation_id] => 3
            [user_id] => 21
            [bill_copy_image_path] => 09132017_044456.jpg
            [create_date] => 2018-03-25 05:44:56
            [name] => Rahul Upadhyay
        )

)

[2017-09-27] => Array

(
    [0] => Array
        (
            [loyalty_transcation_id] => 10
            [user_id] => 24
            [bill_copy_image_path] => 09272017_115913.jpg
            [create_date] => 2017-09-27 12:59:13
            [name] => raj@ot.com
        )

    [1] => Array
        (
            [loyalty_transcation_id] => 3
            [user_id] => 21
            [bill_copy_image_path] => 09132017_044456.jpg
            [create_date] => 2017-09-27 05:44:56
            [name] => Rahul Upadhyay
        )

)

[2017-09-28] => Array

(
    [0] => Array
        (
            [loyalty_transcation_id] => 10
            [user_id] => 24
            [bill_copy_image_path] => 09272017_115913.jpg
            [create_date] => 2017-09-28 12:59:13
            [name] => raj@ot.com
        )

)

Я хочу сохранить все данные, используя дату в качестве ключа, и если одна дата имеет несколько массивов, чем объединить данные в один и тот же ключ.Ключ не должен быть другим.И все остальные, имеющие одну и ту же дату с неповторяющимися значениями, также должны сохранять с той же процедурой.Ниже приведен код, который я написал.

$dups = $new_arr = array();
            foreach ($query->rows as $key => $val) {
                $new = date('Y-m-d', strtotime($val['create_date']));

                if (!isset($new_arr[$new])) {
                    $new_arr[$new] = $val;

                    //die;
                } else {
                    if (isset($dups[$new])) {
                       $dups[$new][] = $val;
                       //print_r($dups[$new]);
                      //echo "\n";
                    } else {
                       //$dups[$new] = array($val);
                       $dups[$new] = array($new_arr[$new], $value);
                    }
                }
            }
            //echo "<pre>";
            print_R($dups);
            die;

Код возвращает только данные для повторяющихся значений и не возвращает данные, которые не повторяются.Также ключи возвращаются нормально, но значения сливаются с другой даты.Мы будем благодарны за любую помощь.

Массив ввода, который мы хотим отсортировать:

Array
(
[0] => Array
    (
        [loyalty_transcation_id] => 36
        [user_id] => 23
        [bill_copy_image_path] => 05082018_144348.jpg
        [create_date] => 2018-05-08 15:43:48
        [name] => Admin
    )

[1] => Array
    (
        [loyalty_transcation_id] => 35
        [user_id] => 18
        [bill_copy_image_path] => 04052018_160009.jpg
        [create_date] => 2018-04-05 17:00:09
        [name] => gurpreet.singh@outlook.de
    )

[2] => Array
    (
        [loyalty_transcation_id] => 33
        [user_id] => 58
        [bill_copy_image_path] => 03252018_182712.jpg
        [create_date] => 2018-03-25 19:27:12
        [name] => bernd koch
    )

[3] => Array
    (
        [loyalty_transcation_id] => 32
        [user_id] => 57
        [bill_copy_image_path] => 03252018_160706.jpg
        [create_date] => 2018-03-25 17:07:06
        [name] => alex
    )
   )

1 Ответ

0 голосов
/ 25 мая 2018

Это должно работать:

$responseArr = array();
foreach($inputArr as $input) {
    $dateKey = date('Y-m-d', strtotime($input['create_date']));
    if(!isset($responseArr[$dateKey])) {
        $responseArr[$dateKey] = array();
    }
    array_push($responseArr[$dateKey], $input);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...