Групповой массив PHP на 2 разных значения - PullRequest
1 голос
/ 07 ноября 2010

У меня есть такой массив:

Array
(
    [0] => Array
        (
            [datetime] => 2010-11-06 21:25:53
            [movieID] => 1197624
            [personID] => 0
            [more indexes]...
        )
    [1] => Array
        (
            [datetime] => 2010-11-06 21:32:56
            [movieID] => 1197624
            [personID] => 0
            [more indexes]...
        )
    [2] => Array
        (
            [datetime] => 2010-11-06 21:38:07
            [movieID] => 0
            [personID] => 0987657
            [more indexes]...
        )
    [3] => Array
        (
            [datetime] => 2010-11-06 21:55:09
            [movieID] => 0
            [personID] => 0987657
            [more indexes]...
        )
    [4] => Array
        (
            [datetime] => 2010-11-06 21:59:33
            [movieID] => 5467023
            [personID] => 0
            [more indexes]...
        )
)

В каждом внутреннем массиве, когда [movieID] имеет число, отличное от 0, тогда [personID] будет равно 0 и наоборот.Я хочу сгруппировать массив по [movieID], если он отличается от 0, и по [personID], если он отличается от 0

Так что результат будет примерно таким:

Array
(
    [1197624] => Array
        (
            [0] => Array
                (
                    [datetime] => 2010-11-06 21:32:56
                    [movieID] => 1197624
                    [personID] => 0
                    [more indexes]...
                )
            [1] => Array
                (
                    [datetime] => 2010-11-06 21:25:53
                    [movieID] => 1197624
                    [personID] => 0
                    [more indexes]...
                )
        )
    [0987657] => Array
        (
            [0] => Array
                (
                    [datetime] => 2010-11-06 21:38:07
                    [movieID] => 0
                    [personID] => 0987657
                    [more indexes]...
                )
            [1] => Array
                (
                    [datetime] => 2010-11-06 21:55:09
                    [movieID] => 0
                    [personID] => 0987657
                    [more indexes]...
                )
        )
    [5467023] => Array
        (
            [0] => Array
                (
                    [datetime] => 2010-11-06 21:59:33
                    [movieID] => 5467023
                    [personID] => 0
                    [more indexes]...
                )
        )
)

Единственная проблема, которую я вижу при группировке, подобной этой, состоит в том, что существует вероятность того, что [movieID] и [personID] - это одно и то же число (конечно, в разных индексах), но вероятность очень мала.

Так что кто-то может помочья группирую этот массив ???

1 Ответ

3 голосов
/ 08 ноября 2010

Так по сути как то так?

$replacement = array();
foreach($original as $item) {
    if ($item['movieID'] != 0)
        $replacement[ $item['movieID'] ][] = $item;
    else
        $replacement[ $item['personID'] ][] = $item;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...