PHP/MySQL-在输出数组中合并重复值

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

我知道以前有人问过这个问题,但似乎没有一个能解决我的问题

我有一个数据库,其中一个用户可以有多行。每个的唯一标识符是UID/UUID。没有别的了。其他值可能完全不同

我执行选择表中所有行的查询。这将返回一个多维数组:

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'];
    }
}

谢谢,工作很有魅力。从你的回答中,我得到了另一个更适合我的想法。:)谢谢,工作也很有魅力,但伏尔坎·乌鲁库特是第一个,所以我接受了他的回答。