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

时间:2013-10-05 22:54:43

标签: php arrays associative-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"]=> "Bentley"}}
}

1 个答案:

答案 0 :(得分:0)

只需遍历数组并将子数组添加到新数组中,其中键为$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
}