Given array like this, I want to arrange data in a custom way.
array:5 [
0 => array:4 [
"message" => "Message number 1 for first conversation"
"is_seen" => 0
"user_id" => 2
"sent_time" => "2017-08-30 23:28:50"
]
1 => array:4 [
"message" => "Message number 2 for first conversation"
"is_seen" => 1
"user_id" => 1
"sent_time" => "2017-08-29 23:36:27"
]
2 => array:4 [
"message" => "Message number 3 for first conversation"
"is_seen" => 1
"user_id" => 1
"sent_time" => "2017-08-29 23:36:27"
]
3 => array:4 [
"message" => "Message number 4 for first conversation by second user"
"is_seen" => 1
"user_id" => 2
"sent_time" => "2017-08-29 23:36:27"
]
4 => array:4 [
"message" => "Message number 5 for first conversation by second user"
"is_seen" => 1
"user_id" => 2
"sent_time" => "2017-08-29 23:36:27"
]
]
What I want to do is to group messages that are sent by the same user so I get an array like this :
$data = [
"block" => [
[
"message" => "Message number 1 for first conversation",
"is_seen" => 0,
"user_id" => 2,
"sent_time" => "2017-08-30 23:28:50"
]
],
"block" => [
[
"message" => "Message number 2 for first conversation",
"is_seen" => 1,
"user_id" => 1,
"sent_time" => "2017-08-29 23:36:27"
],
[
"message" => "Message number 3 for first conversation",
"is_seen" => 1,
"user_id" => 1,
"sent_time" => "2017-08-29 23:36:27"
]
],
"block" => [
[
"message" => "Message number 4 for first conversation by second user",
"is_seen" => 1,
"user_id" => 2,
"sent_time" => "2017-08-29 23:36:27"
],
[
"message" => "Message number 5 for first conversation by second user",
"is_seen" => 1,
"user_id" => 2,
"sent_time" => "2017-08-29 23:36:27"
]
]
];
So basically, If next message user_id
is same as previous message user_id
add it to group array. If it is not, create new group
array and so on. I do not want to group all user messages together since this structure is required for pagination in front-end.