2015-02-11 103 views
1

的基础上创建组I具有以下阵列阵列特定字段值

array 
(
    [0] => Array 
    (
     [market_id] => 10 
     [competition_id] => 31   
    ) 

    [1] => Array 
    (
     [market_id] => 10 
     [competition_id] => 31   
    ) 

    [2] => Array 
    (
     [market_id] => 11 
     [competition_id] => 31   
    ) 

    [3] => Array 
    (
     [market_id] => 11 
     [competition_id] => 31   
    ) 

    [4] => Array 
    (
     [market_id] => 11 
     [competition_id] => 31   
    ) 
) 

是否有一个单一的功能,以从上述输入创建下面阵列或我不得不手动遍历阵列和得到所需的结果?

array 
(
    [0] => Array 
    (
     [0] => Array 
     (
      [market_id] => 10 
      [competition_id] => 31   
     ) 
     [1] => Array 
     (
      [market_id] => 10 
      [competition_id] => 31   
     ) 
    ) 
    [1] => Array 
    (
     [0] => Array 
     (
      [market_id] => 11 
      [competition_id] => 31   
     ) 
     [1] => Array 
     (
      [market_id] => 11 
      [competition_id] => 31   
     ) 
     [2] => Array 
     (
      [market_id] => 11 
      [competition_id] => 31   
     )   
    ) 
) 

所有我想要的是一群的基础上,我的数组元素market_id场。

+1

如何获取输入数组,如果您从数据库获取,则可以使用group by子句。 – khanz 2015-02-11 07:18:39

+1

单功能?没有,我不这么认为,只是手动创建另一个,一个简单的foreach和'array_values'来重新索引就足够了。 – Ghost 2015-02-11 07:28:00

+1

http://stackoverflow.com/questions/7574857/group-array-by-subarray-values - 同样的问题 – 2015-02-11 07:32:25

回答

1

没有捷径。构建一个以market_id作为键的新阵列,然后删除临时密钥:

$result = []; 
foreach ($array as $item) { 
    $result[$item['market_id']][] = $item; 
} 
$result = array_values($result); 
+0

谢谢,它的工作和这个解决方案有更少的代码! – neeraj 2015-02-11 09:29:40

2

Additionaly当你不想做他的香草PHP中,你可以使用ouzo-goodies

$array = array(
    0 => array(
     'market_id' => '10', 
     'competition_id' => '31' 
    ), 
    1 => array(
     'market_id' => '10', 
     'competition_id' => '31' 
    ), 
    2 => array(
     'market_id' => '11', 
     'competition_id' => '31' 
    ), 
    3 => array(
     'market_id' => '11', 
     'competition_id' => '31' 
    ), 
    4 => array(
     'market_id' => '11', 
     'competition_id' => '31' 
    ) 
); 

$groupBy = Arrays::groupBy($array, Functions::extract()->market_id); 

print_r($groupBy); 

而且结果:

Array 
(
    [10] => Array 
     (
      [0] => Array 
       (
        [market_id] => 10 
        [competition_id] => 31 
       ) 

      [1] => Array 
       (
        [market_id] => 10 
        [competition_id] => 31 
       ) 

     ) 

    [11] => Array 
     (
      [0] => Array 
       (
        [market_id] => 11 
        [competition_id] => 31 
       ) 

      [1] => Array 
       (
        [market_id] => 11 
        [competition_id] => 31 
       ) 

      [2] => Array 
       (
        [market_id] => 11 
        [competition_id] => 31 
       ) 

     ) 

) 

这里是文档的ArraysFunctions

+0

我得到一个错误类'阵列'没有在/var/www/test/group.php在31行 – neeraj 2015-02-11 09:41:22

+1

不要忘记进口。 – 2015-02-11 09:45:00