2010-11-07 43 views
1

我有一个这样的数组的数组:PHP组由2个不同的值

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和反之亦然。我想组通过,如果大于0的不同[movieID]和[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]是相同的数字(当然在不同的索引中),但机会很少。

那么有人可以帮我分组这个数组?

回答

3

所以基本上是这样的?

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

不错,我期望一个更大的功能。这非常棒!我会给你答案。如果存在相同的[movieID]和[personID]号码,您建议如何避免问题? – Jonathan 2010-11-07 21:09:35

+0

我不得不知道为什么这个结构对你首先建议一种解决冲突的方法是有利的。为什么不,例如,只有两个单独的列表:一个是movieID,另一个是personID。 – VoteyDisciple 2010-11-08 16:30:16