PHP如何高效地对根据键值对数组元素进行归类?

如以下代码:

    $arr = [
        0 => [
            "category" => "red",
            "price" => 95
        ],
        1 => [
            "category" => "blue",
            "price" => 85
        ],    
        2 => [
            "category" => "red",
            "price" => 75
        ]
    ];
    
    //我希望将以上其归类为如下数组
    
    [
        "red" => [
            0 => [
                "category" => "red",
                "price" => 95
            ],            
            1 => [
                "category" => "red",
                "price" => 75
            ]        
        ],
        "blue" => [
            0 => [
                "category" => "blue",
                "price" => 85
            ]        
        ]
    ]

希望大神能给个思路,谢谢

阅读 5.8k
2 个回答
<?php

$arr = [
        0 => [
            "category" => "red",
            "price" => 95
        ],
        1 => [
            "category" => "blue",
            "price" => 85
        ],    
        2 => [
            "category" => "red",
            "price" => 75
        ]
    ];

$result = array();
foreach($arr as $k=>$v){
    //var_dump($v);
    //echo $v['price'];
    $key = $v['category'];
    if(!array_key_exists($key, $result)) $result[$key] =array();
    $result[$key][] = $v;

}

var_dump($result);
function group_same_key($arr,$key){
    $new_arr = array();
    foreach($arr as $k=>$v ){
        $new_arr[$v[$key]][] = $v;
    }
    return $new_arr;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题