将二维数组转换为三维数组


Conversion of a two-dimensional array to three-dimensional array

请给我建议。我有一个公司名录。如何按第一个字母对公司名称进行分组。例如: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
}