我有下面的 $test
数组,按“date”和“site”排序。
$test = array (
0 => array (
'id' => '45',
'rating' => 'p1',
'site' => 'Heavener SW',
'time' => '11-03-2012 Sat 10:00:00',
),
1 => array (
'id' => '45',
'rating' => 'h3',
'site' => 'Heavener SW',
'time' => '11-03-2012 Sat 10:00:00',
),
2 => array (
'id' => '45',
'rating' => 'h4',
'site' => 'Heavener SW',
'time' => '11-03-2012 Sat 16:00:00',
),
3 => array (
'id' => '110',
'rating' => 'p3',
'site' => 'Red Oak',
'time' => '11-03-2012 Sat 16:00:00',
),
4 => array (
'id' => '110',
'rating' => 'h3',
'site' => 'Red Oak',
'time' => '11-03-2012 Sat 16:00:00',
),
5 => array (
'id' => '32',
'rating' => 'p2',
'site' => 'Panopoint',
'time' => '11-04-2012 Sun 10:00:00',
)
);
我已经疯了,试图为每个“站点”-“时间”组合组合“评级”。
$result = array (
0 => array (
'id' => '45',
'rating' => 'p1, h3',
'site' => 'Heavener SW',
'time' => '11-03-2012 Sat 10:00:00',
),
2 => array (
'id' => '45',
'rating' => 'h4',
'site' => 'Heavener SW',
'time' => '11-03-2012 Sat 16:00:00',
),
3 => array (
'id' => '110',
'rating' => 'p3, h3',
'site' => 'Red Oak',
'time' => '11-03-2012 Sat 16:00:00',
),
5 => array (
'id' => '32',
'rating' => 'p2',
'site' => 'Panopoint',
'time' => '11-04-2012 Sun 10:00:00',
)
);
对于网站可以拥有的“评级”数量或“网站”或“时间”的数量没有限制(在合理范围内)。
在 $result
中保留索引是可选的(即没有必要)。
我找到了这篇类似的文章(以及其他文章),但我不明白如何实现。 Getting all the related ones based on value
我已经尝试了很多不同的方法让我头晕目眩,非常感谢任何帮助!
最佳答案
你可以简单地使用array_reduce
$test = array_reduce($test, function ($a, $b) {
isset($a[$b['time'] . "|" . $b['id']]) ? $a[$b['time'] . "|" . $b['id']]['rating'] .= "," . $b['rating'] : $a[$b['time'] . "|" . $b['id']] = $b;
return $a;
});
$test = array_values($test);
var_dump($test);
输出
array
0 =>
array
'id' => string '45' (length=2)
'rating' => string 'p1,h3' (length=5)
'site' => string 'Heavener SW' (length=11)
'time' => string '11-03-2012 Sat 10:00:00' (length=23)
1 =>
array
'id' => string '45' (length=2)
'rating' => string 'h4' (length=2)
'site' => string 'Heavener SW' (length=11)
'time' => string '11-03-2012 Sat 16:00:00' (length=23)
2 =>
array
'id' => string '110' (length=3)
'rating' => string 'p3,h3' (length=5)
'site' => string 'Red Oak' (length=7)
'time' => string '11-03-2012 Sat 16:00:00' (length=23)
3 =>
array
'id' => string '32' (length=2)
'rating' => string 'p2' (length=2)
'site' => string 'Panopoint' (length=9)
'time' => string '11-04-2012 Sun 10:00:00' (length=23)
关于php - 组合数组字符串值并丢弃数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13214512/