将具有共同值的数组组合成一个新数组
Combine arrays with a common value into a new array
我正在做一个项目,但我一直卡在这个问题上,我的问题是我有一个数组,如下所示
$arr1 = array(
array
(
'id' => '1',
'city' => 'A.bad',
),
array
(
'id' => '2',
'city' => 'Pune',
),
array
(
'id' => '1',
'city' => 'Mumbai',
)
);
我必须通过 id 比较 this,我想要如下所示的输出。
$result = array(
array(
'id'='1',
'city'='A.bad','Mumbai'
),
array(
'id'='2',
'city'='Pune'
)
);
如果我们有与第一个相同的 id 是 A.bad
所以它会接受它并且在第三个它有 id 1 和 city 为 mumbai
所以它会合并为 id 1和城市,因为 a.bad
、mumbai
和其他记录以相同方式过滤。
遍历数组并根据 id
生成新的 array
。您可以试试这个 -
$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'];
}
如果您从数据库中获取该数据,您也可以在查询中对它们进行分组。
我正在做一个项目,但我一直卡在这个问题上,我的问题是我有一个数组,如下所示
$arr1 = array(
array
(
'id' => '1',
'city' => 'A.bad',
),
array
(
'id' => '2',
'city' => 'Pune',
),
array
(
'id' => '1',
'city' => 'Mumbai',
)
);
我必须通过 id 比较 this,我想要如下所示的输出。
$result = array(
array(
'id'='1',
'city'='A.bad','Mumbai'
),
array(
'id'='2',
'city'='Pune'
)
);
如果我们有与第一个相同的 id 是 A.bad
所以它会接受它并且在第三个它有 id 1 和 city 为 mumbai
所以它会合并为 id 1和城市,因为 a.bad
、mumbai
和其他记录以相同方式过滤。
遍历数组并根据 id
生成新的 array
。您可以试试这个 -
$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'];
}
如果您从数据库中获取该数据,您也可以在查询中对它们进行分组。