【问题标题】:need help grouping a php array需要帮助对 php 数组进行分组
【发布时间】:2011-04-15 12:45:18
【问题描述】:

我有一个 mysql 查询,它会输出以下数组:

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
        )

)

我想知道是否可以按“类别”对数组进行分组,所以不是重复的 catid,而是每个对象都有一个 catid。如果这有意义吗?所以说 catid 7 只会出现一次,里面有两个 item1/item2。

【问题讨论】:

    标签: php arrays merge grouping


    【解决方案1】:

    这个怎么样?

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

    【讨论】:

    • 感谢您,但我如何将项目放入适当的类别中?我仍然有重复的类别:)
    • 您需要详细说明您希望如何组合它们。
    【解决方案2】:

    您可以使用ouzo goodies

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

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

    【讨论】:

      【解决方案3】:
      $ret = array();
      foreach ($array as $value) {
        foreach ($value as $key => $item) {
            if ($key == 'catid') continue;
            $ret[$value['catid']][] = $item;
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-23
        • 2015-06-28
        • 2021-03-27
        • 2021-01-16
        • 2014-06-29
        • 1970-01-01
        • 1970-01-01
        • 2021-11-08
        相关资源
        最近更新 更多