我有一个格式数组
array
(
0 => array ( id = 1, name = chimpanzee, address = Singapore )
1 => array ( id = 2, name = meeting, address = USA )
2 => array ( id = 3, name = dynasty, address = Singapore )
3 => array ( id = 4, name = chocolate, address = Netherland )
4 => array ( id = 5, name = bananas, address = Singapore )
5 => array ( id = 6, name = fantasy, address = USA )
6 => array ( id = 7, name = football, address = England)
)
我想根据每个子数组中的地址字段将其分组到一个新数组中。
array
(
Singapore => array
(
0 => array ( id = 1, name = chimpanzee, address = Singapore )
2 => array ( id = 3, name = dynasty, address = Singapore )
4 => array ( id = 5, name = bananas, address = Singapore )
)
USA => array
(
1 => array ( id = 2, name = meeting, address = USA )
5 => array ( id = 6, name = fantasy, address = USA )
)
Netherland => array
(
3 => array ( id = 4, name = chocolate, address = Netherland )
)
England => array
(
6 => array ( id = 7, name = football, address = England)
)
)
正如@Rizier123所说,使用循环检查所有数组条目并将它们复制到一个新的(排序的)数组中,如下所示:
$source_array = array(
array( 'id' => 1, 'name' => 'chimpanzee', 'address' = 'Singapore' ),
array( 'id' => 2, 'name' => 'meeting', 'address' = 'USA' ),
array( 'id' => 3, 'name' => 'dynasty', 'address' = 'Singapore' ),
array( 'id' => 4, 'name' => 'chocolate', 'address' = 'Netherland' ),
array( 'id' => 5, 'name' => 'bananas', 'address' = 'Singapore' ),
array( 'id' => 6, 'name' => 'fantasy', 'address' = 'USA' ),
array( 'id' => 7, 'name' => 'football', 'address' = 'England'),
);
$sorted_array = array();
foreach ( $source_array as $idx => $entry ) {
// Check if country already has a array
if ( ! isset( $sorted_array[ $entry['address'] ] ) ) {
$sorted_array[ $entry['address'] ] = array();
}
$sorted_array[ $entry['address'] ][ $idx ] = $entry;
}