PHP/MySQL-在输出数组中合并重复值
我知道以前有人问过这个问题,但似乎没有一个能解决我的问题 我有一个数据库,其中一个用户可以有多行。每个的唯一标识符是UID/UUID。没有别的了。其他值可能完全不同 我执行选择表中所有行的查询。这将返回一个多维数组:PHP/MySQL-在输出数组中合并重复值,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我知道以前有人问过这个问题,但似乎没有一个能解决我的问题 我有一个数据库,其中一个用户可以有多行。每个的唯一标识符是UID/UUID。没有别的了。其他值可能完全不同 我执行选择表中所有行的查询。这将返回一个多维数组: Array ( [0] => Array ( [meta] => 213097312903 [UUID] => 1 [data_name] => wheel_id
Array
(
[0] => Array
(
[meta] => 213097312903
[UUID] => 1
[data_name] => wheel_id
[data_value] => 13940
)
[1] => Array
(
[meta] => 2217037902293
[UUID] => 1
[data_name] => car_id
[data_value] => 09278149
)
[2] => Array
(
[meta] => 201207386198
[UUID] => 12
[data_name] => car_id
[data_value] => 639781238
)
)
我想要完成的是处理给定的多维数组并合并相同UUID的所有值,如下所示:
Array
(
[0] => Array
(
[meta] => 213097312903,2217037902293
[UUID] => 1
[data_name] => wheel_id,car_id
[data_value] => 13940,09278149
)
[1] => Array
(
[meta] => 201207386198
[UUID] => 12
[data_name] => car_id
[data_value] => 639781238
)
)
它并不完全像这样,我只是不希望同一个用户的数据都在数组中。
为了进一步处理,我需要所有用户,所以我不能简单地查询select all where ID…
我受够了(您可以循环该数组并创建一个新数组:
foreach($data as $value)
{
$output[$value['UUID']]['meta'][] = $value['meta'];
$output[$value['UUID']]['data_name'][] = $value['data_name'];
$output[$value['UUID']]['data_value'][] = $value['data_value'];
}
如果要将数组转换为逗号分隔的值:
foreach($output as $uuid => $value)
{
$outputWithCSV[$uuid]['meta'] = implode(",",$value['meta']);
$outputWithCSV[$uuid]['data_name'] = implode(",",$value['data_name']);
$outputWithCSV[$uuid]['data_value'] = implode(",",$value['data_value']);
}
$outputWithCSV
将是:
Array
(
[1] => Array
(
[meta] => 213097312903,2217037902293
[data_name] => wheel_id,car_id
[data_value] => 13940,09278149
)
[12] => Array
(
[meta] => 201207386198
[data_name] => car_id
[data_value] => 639781238
)
)
根据您的ID创建一个新容器,如果其集合已经存在,只需连接下一个匹配项:
$data = array();
foreach($array as $values) {
if(!isset($data[$values['UUID']])) {
$data[$values['UUID']] = $values;
} else {
$data[$values['UUID']]['meta'] .= ', ' . $values['meta'];
$data[$values['UUID']]['data_name'] .= ', ' . $values['data_name'];
$data[$values['UUID']]['data_value'] .= ', ' . $values['data_value'];
}
}
谢谢,工作很有魅力。从你的回答中,我得到了另一个更适合我的想法。:)谢谢,工作也很有魅力,但伏尔坎·乌鲁库特是第一个,所以我接受了他的回答。