我有一个这样的数组:
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' => ''
),
)
我想组所有元素都在同一天进入一个数组。像这样的东西:
array(
['2017-12-20'] => array( '0', '1'),
['2017-12-21'] => array( '2' ),
['2017-12-22'] => array( '3', '4' ),
)
PHP有什么功能可以做到这一点?或者有人知道最好的解决方案?谢谢!!!
这是你的解决方案......
输入
<?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' => ''
),
);
解
$new = array();
foreach($array as $r){
$new[$r['date']][] = array('name'=>$r['name'],'kwa' => $r['kwa']);
}
echo "<pre>";print_r($new);
?>
产量
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] =>
)
)
)
$arr = array();
foreach($array1 as $key => $item)
{
$arr[$item['date']][$key] = $key;
}
echo "<pre>";
print_r($arr);
我会使用类似下面的内容:
$array = [
[
'date' => '2017-12-20',
'name' => 'test A',
'kwa' => 'kwa1, kwa2'
],
[
'date' => '2017-12-20',
'name' => 'test B',
'kwa' => ''
],
[
'date' => '2017-12-21',
'name' => 'test C',
'kwa' => 'kwa1'
],
[
'date' => '2017-12-22',
'name' => 'test D',
'kwa' => ''
],
[
'date' => '2017-12-22',
'name' => 'test E',
'kwa' => ''
],
];
$formatted = [];
foreach ($array as $k => $v) {
$formatted[$v['date']] = $formatted[$v['date']] ?? [];
array_push($formatted[$v['date']], $k);
}
print_r($formatted);