将具有公共值的数组组合到新数组中

var*_*yee -1 php arrays grouping

我正在研究一个项目,我坚持这个我的问题是我有一个数组,如下所示

$arr1  =   array(
        array
        (
            'id' => '1',
            'city' => 'A.bad',
        ),
        array
        (
            'id' => '2',
            'city' => 'Pune',
        ),
        array
        (
            'id' => '1',
            'city' => 'Mumbai',
        )
        );
Run Code Online (Sandbox Code Playgroud)

我必须通过id比较这个,我想要输出如下.

$result = array(
       array(
          'id'='1',
          'city'='A.bad','Mumbai'
      ),
      array(
          'id'='2',
          'city'='Pune'
      )
);
Run Code Online (Sandbox Code Playgroud)

如果我们拥有与第一个相同的ID,A.bad那么它将采用它,而在第三个中它具有id 1和city,mumbai因此它将组合为id 1和city as a.bad,mumbai并且其他记录以相同的方式过滤.

Sou*_*ose 5

循环遍历数组并生成一个新的array取决于.id你可以尝试这个 -

$new = array();
foreach($arr1 as $array) {
    $new[$array['id']]['id']= $array['id'];
    // check if the city value set for that id
    // if set the concatenate else set with the city name 
    $new[$array['id']]['city']= (isset( $new[$array['id']]['city'])) ?  ($new[$array['id']]['city'] . ',' . $array['city']) : $array['city'];
}
Run Code Online (Sandbox Code Playgroud)

小提琴

如果您从数据库获取数据,您也可以在查询中对它们进行分组.