I have an array like that:
array(
[0] => array(
'date' => '2017-12-20',
'name' => 'test A',
'kwa' => 'kwa1, kwa2'
),
[1] => array(
'date' => '2017-12-20',
'name' => 'test B',
'kwa' => ''
),
[2] => array(
'date' => '2017-12-21',
'name' => 'test C',
'kwa' => 'kwa1'
),
[3] => array(
'date' => '2017-12-22',
'name' => 'test D',
'kwa' => ''
),
[4] => array(
'date' => '2017-12-22',
'name' => 'test E',
'kwa' => ''
),
)
I want group all elements has the same day into a array. Something like that:
array(
['2017-12-20'] => array( '0', '1'),
['2017-12-21'] => array( '2' ),
['2017-12-22'] => array( '3', '4' ),
)
Here is your solution...
Input
<?php
$array = array(
array(
'date' => '2017-12-20',
'name' => 'test A',
'kwa' => 'kwa1, kwa2'
),array(
'date' => '2017-12-20',
'name' => 'test B',
'kwa' => ''
),array(
'date' => '2017-12-21',
'name' => 'test C',
'kwa' => 'kwa1'
),array(
'date' => '2017-12-22',
'name' => 'test D',
'kwa' => ''
),array(
'date' => '2017-12-22',
'name' => 'test E',
'kwa' => ''
),
);
Solution
$new = array();
foreach($array as $r){
$new[$r['date']][] = array('name'=>$r['name'],'kwa' => $r['kwa']);
}
echo "<pre>";print_r($new);
?>
Output
Array
(
[2017-12-20] => Array
(
[0] => Array
(
[name] => test A
[kwa] => kwa1, kwa2
)
[1] => Array
(
[name] => test B
[kwa] =>
)
)
[2017-12-21] => Array
(
[0] => Array
(
[name] => test C
[kwa] => kwa1
)
)
[2017-12-22] => Array
(
[0] => Array
(
[name] => test D
[kwa] =>
)
[1] => Array
(
[name] => test E
[kwa] =>
)
)
)