【问题标题】:Sort multidimensional Array, merge by keys in PHP对多维数组进行排序,在 PHP 中按键合并
【发布时间】:2012-11-25 22:49:23
【问题描述】:

我有这个数组:

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
                )

        )
)

我想这样排序(不知道我是否完全正确):

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

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

            )

        [1] => Array
            (
                [name] => Dick
                [matchedMovie][0] => 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;
    }

但这不起作用。

【问题讨论】:

  • 所以你在标题中提到了sort,但在你的问题中没有。实际上,您是否也在尝试做某种类型的工作?
  • 我对这两个数组之间的区别有点困惑。或许您可以用文字概述您想要实现的目标。
  • 对不起,我的英语不是最好的。我会试着解释一下。正如您在第一个多维数组中看到的,有一个名称被两次提及。我想将第二个名字的matchedMovie 与第一个合并。这样它就都在同一个名字下,每个名字都是唯一的。
  • 您需要进行比较以查看它们是否具有相同的“名称”值。除非您使用 'name' 的值作为键,否则您可以直接将它们设置为相同的键。

标签: php multidimensional-array merge key


【解决方案1】:

只是快速尝试一下。

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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多