需要帮助的分组PHP数组

问题描述:

我有一个MySQL查询该吐出来的是以下数组:需要帮助的分组PHP数组

Array 
(
    [0] => stdClass Object 
     (
      [item1] => foo 0 
      [item2] => bar 0 
      [catid] => 3 
     ) 

    [1] => stdClass Object 
     (
      [item1] => foo 1 
      [item2] => bar 1 
      [catid] => 7 
     ) 

    [2] => stdClass Object 
     (
      [item1] => foo 2 
      [item2] => bar 2 
      [catid] => 10 
     ) 

    [3] => stdClass Object 
     (
      [item1] => foo 3 
      [item2] => bar 3 
      [catid] => 7 
     ) 

) 

我想知道是否有可能按“类别”的阵列,所以不是重复catids,会有一个catid,每个对象都在里面..如果这有道理的话?所以说catid 7只会出现一次,里面有两个item1/item2。

这个怎么样?

foreach($results as $result) { 
    $by_category[$result->catid][] = $result; 
} 

print_r($by_category); 
+0

感谢那个,但我怎么把适当的类别里面的物品?我仍然有重复的类别:) – SoulieBaby 2010-09-22 03:36:24

+0

你将需要详细说明你想如何组合他们。 – Amber 2010-09-22 05:40:21

$ret = array(); 
foreach ($array as $value) { 
    foreach ($value as $key => $item) { 
     if ($key == 'catid') continue; 
     $ret[$value['catid']][] = $item; 
    } 
} 

你可以用ouzo goodies做到这一点:

$categories = Arrays::groupBy($results, Functions::extractField('catid')); 

参见:http://ouzo.readthedocs.org/en/latest/utils/arrays.html#groupby