0

I have a multidimensional Array like this. Which I have to sort in some way where the same user's data will be stored in one array.

Array
(
    [0] => Array
        (
            [user_email] => [email protected]
            [available_date] => 2018/06/30
            [available_time] => 06.00,06.30,07.00,07.30
        )

    [1] => Array
        (
            [user_email] => [email protected]
            [available_date] => 2018/06/31
            [available_time] => 06.30,07.00,07.30,08.00
        )

    [3] => Array
        (
            [user_email] => [email protected]
            [available_date] => 2018/06/31
            [available_time] => 08.00,08.30,09.00,09.30
        )

    [4] => Array
        (
            [user_email] => [email protected]
            [available_date] => 2018/06/30
            [available_time] => 08.30,09.00,09.30,10.00
        )

)
)

I want the final array to be like this,Where available_date and available time will be merged as an array with a key name for a same user.Maybe this is easy but I am stuck.Any help would be appreciated.

Array
(

    [0] => Array
        (
            [user_email] => [email protected]
            [date_time] => Array
            (
              [0]=>Array
                (
                  [date] => 2018/06/30
                  [time] => 06.00,06.30,07.00,07.30,
                )
              [1]=>Array
                (
                  [date] => 2018/06/31
                  [time] => 06.30,07.00,07.30,08.00,
                )
             )
        )

    [1] => Array
        (
            [user_email] => [email protected]
            [date_time] => Array
            (
              [0]=>Array
                (
                  [date] => 2018/06/31,
                  [time] => 08.00,08.30,09.00,09.30,
                )
              [1]=>Array
                (
                  [date] => 2018/06/30,
                  [time] => 08.30,09.00,09.30,10.00,
                )
             )
        )

)
2
  • What have you already tried? Commented Jun 18, 2018 at 11:59
  • I tried something like this. $response=array();$user_email=$result['user_email']; foreach ($result as $value) { $data=array('available_date'=>$value['available_date'],'available_time'=>$value['available_time']); array_push($response, $data); }$res['user_email']=$user_email; $res['available_list']=$response; print_r($res); It's just listing all the date time inside first user array. Let me check if I can solve the problem using @Alessandro's solution Commented Jun 18, 2018 at 12:51

1 Answer 1

1

You could do something like this :

$x =
[
    "0" => [
            "user_email" => "[email protected]",
            "available_date" => "2018/06/30",
            "available_time" => "06.00,06.30,07.00,07.30",
        ],

    "1" => [
            "user_email" => "[email protected]",
            "available_date" => "2018/06/31",
            "available_time" => "06.30,07.00,07.30,08.00,"
        ],

    "3" => [
            "user_email" => "[email protected]",
            "available_date" => "2018/06/31",
            "available_time" => "08.00,08.30,09.00,09.30",
        ],

    "4" => [
            "user_email" => "[email protected]",
            "available_date" => "2018/06/30",
            "available_time" => "08.30,09.00,09.30,10.00",
        ]
];


$result = [];

foreach ($x as $item) {
    $temp['date'] = $item['available_date'];
    $temp['time'] = $item['available_time'];
    $result[$item['user_email']]['date_time'][] = $temp;
}

print_r($result);

And the result is this :

Array ( [[email protected]] => Array ( [date_time] => Array ( [0] => Array ( [date] => 2018/06/30 [time] => 06.00,06.30,07.00,07.30 ) [1] => Array ( [date] => 2018/06/31 [time] => 06.30,07.00,07.30,08.00, ) ) ) [[email protected]] => Array ( [date_time] => Array ( [0] => Array ( [date] => 2018/06/31 [time] => 08.00,08.30,09.00,09.30 ) [1] => Array ( [date] => 2018/06/30 [time] => 08.30,09.00,09.30,10.00 ) ) ) )
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.