请给我建议。我有一个公司名录。如何按第一个字母对公司名称进行分组。例如:A - 阿迪达斯,华硕...B - 宝马,宾利等
公司阵容:
array() { [0]=> array(10) { ["id"]=> "1" ["name"]=> "Adidas"} [1]=> array(10) { ["id"]=> "2" ["name"]=> "ASUS"} [2]=> array(10) { ["id"]=> "3" ["name"]=> "BMW"} [3]=> array(10) { ["id"]=> "4" ["name"]=> "Bentley"}}
我想得到:
array() { ['A']=> array {[0]=> array(10) { ["id"]=> "1" ["name"]=> "Adidas"} , [1]=> array(10) { ["id"]=> "2" ["name"]=> "ASUS"}} ['B']=> array {[2]=> array(10) { ["id"]=> "3" ["name"]=> "BMW"},[3]=> array(10) { ["id"]=> "4" ["name"]=> "宾利"}}}
只需遍历数组并将子数组添加到一个新数组中,键是$entry["name"]
的第一个字符
$newArray = array_keys(range('A', 'Z')); // ensure a filled array
foreach ($data as $entry) {
// & ~" " is a shorthand for transforming to uppercase
$newArray[$entry["name"][0] & ~" ")]][] = $entry; // add $entry to $newArray
}