排序多维数组,在PHP中按键合并

排序多维数组,在PHP中按键合并,php,multidimensional-array,merge,key,Php,Multidimensional Array,Merge,Key,我有这个阵列: Array ( [0] => Array ( [name] => Ben [matchedMovie] => Array ( [name] => Saw [genre] => Horror [patheMovie] => T

我有这个阵列:

Array
(
    [0] => Array
        (
            [name] => Ben
            [matchedMovie] => Array
                (
                    [name] => Saw
                    [genre] => Horror
                    [patheMovie] => Texas Chainsaw 3D
                    [patheMovieGenre] => Horror
                    [score] => 100.00
                )

        )

    [1] => Array
        (
            [name] => Ben 
            [matchedMovie] => Array
                (
                    [name] => Shooter
                    [genre] => Action, Thriller
                    [patheMovie] => The Shining
                    [patheMovieGenre] => Horror, Suspense/Thriller 
                    [score] => 52.38
                )

        )

    [2] => Array
        (
            [name] => Dick
            [matchedMovie] => Array
                (
                    [name] => Resident Evil Movie
                    [genre] => Action/Horror
                    [patheMovie] => Texas Chainsaw 3D
                    [patheMovieGenre] => Horror
                    [score] => 63.16
                )

        )
)
我想对它进行如下排序(不知道是否完全正确):

以便匹配的Movie数组使用相同的名称。 我该怎么做

我尝试过这个功能:

function group_by_key($array) {
        $result = array();
        foreach ($array as $sub) {
            foreach ($sub as $k => $v) {
                $result[$k][] = $v;
            }
        }
        return $result;
    }

但那是行不通的。

只是快速尝试一下而已

function group_by_key($array){
    $result = array();
    foreach($array as $row){
        if(!isset($result[$row['name']]){
            $result[$row['name']] = array(
                'name'=>$row['name'],
                'matchedMovie'=>array($row['matchedMovie'])
            );
        } else {
            $result[$row['name']]['matchedMovie'][] = $row['matchedMovie'];
        }
    }
    return array_values($result);
}

所以你在标题中提到了排序,但在你的问题中没有提到。您是否也在尝试进行某种排序?我对这两个数组之间的差异有点困惑。也许你可以用文字概括你想要达到的目标。对不起,我的英语不是最好的。我会尽力解释的。正如您在第一个多维数组中看到的,有一个名称被两次提到。我想将第二个名字的匹配视频与第一个名字合并。因此,所有名称都是相同的,每个名称都是唯一的。如果要查看它们是否具有相同的“名称”值,则需要进行比较。除非使用“name”的值作为键,否则可以直接将它们设置为同一个键。
function group_by_key($array){
    $result = array();
    foreach($array as $row){
        if(!isset($result[$row['name']]){
            $result[$row['name']] = array(
                'name'=>$row['name'],
                'matchedMovie'=>array($row['matchedMovie'])
            );
        } else {
            $result[$row['name']]['matchedMovie'][] = $row['matchedMovie'];
        }
    }
    return array_values($result);
}