2010-11-07 9 views
1

j'ai un tableau comme suit:réseau de groupe de PHP par 2 des valeurs différentes

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]... 
     ) 
) 

Dans chaque rangée intérieure, lorsque [MovieID] a un nombre différent de 0, alors [personID] est égal à 0 et vice versa. Je veux groupe le tableau par [MovieID] si son différent de 0 et par [personID] si son différent de 0

Ainsi, le résultat sera quelque chose comme ceci:

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]... 
       ) 
     ) 
) 

Le seul problème que je vois en groupant comme ceci est qu'il y a une chance que [movieID] et [personID] soient le même nombre (dans différents index bien sûr) mais la chance est très petite.

Alors, quelqu'un peut-il m'aider à regrouper ce tableau ???

Répondre

3

Donc essentiellement quelque chose comme ça?

$replacement = array(); 
foreach($original as $item) { 
    if ($item['movieID'] != 0) 
     $replacement[ $item['movieID'] ][] = $item; 
    else 
     $replacement[ $item['personID'] ][] = $item; 
} 
+0

Nice, je m'attendais à une fonction beaucoup plus grande. Cela fonctionne très bien! Je vais vous donner la réponse. Qu'est-ce que vous recommandez pour éviter un problème au cas où il y aurait le même numéro [movieID] et [personID] ??? – Jonathan

+0

Je devrais savoir pourquoi cette structure vous est avantageuse en premier lieu pour suggérer un moyen de résoudre les collisions. Pourquoi ne pas, par exemple, avoir deux listes séparées: une par movieID et une par personID. – VoteyDisciple

Questions connexes