3
回答
php如何把数组变成map
华为云实践训练营,热门技术免费实践!>>>   

有个数组,我想以他其中一个字段 把它变成一个map<string, list<obj>> 这样的需求 有什么好方法吗? 总觉得自己写的很蠢,新手求教

 

foreach ($result as $r1) {
        $keyname = $r1['name'];
        if (!$keyname) {
           $keyname = '其他';
        }
        if (array_key_exists($keyname, $label_type_result)) {
           $label_type_result[$keyname] += array(count($label_type_result[$keyname])=>$r1);
        } else {
           $label_type_result += array($keyname => array($r1));
        }
 }

 

<无标签>
举报
getYang
发帖于2个月前 3回/134阅

这样?

$rows = [['name' => 'a', 'age' => 1], ['name' => 'b', 'age' => 2]];
$map = array_combine(array_column($rows, 'name'), $rows);

--- 共有 1 条评论 ---
getYang报错了第二行代码 2个月前 回复

楼上是php5.5+版本。我也不知道有没有更好的办法,这是我的php5.2:

$result = array(
	array('name' => 'a', 'age' => 1), 
	array('name' => 'a', 'age' => 2), 
	array('name' => 'b', 'age' => 2)
);
$arr = array();
foreach ($result as $key => $val) {
	$arr[$val['name'] ? $val['name'] : '其他'][] = $val;
}
print_r($arr);

 

$result = array(
	array('name' => 'a', 'age' => 1), 
	array('name' => 'a', 'age' => 2), 
	array('name' => 'b', 'age' => 2)
);

$arrayMap = array();
array_map(function($item){
    global $arrayMap;
    $arrayMap[ $item['name'] ]=$item;
},$result);

print_r($arrayMap);

 

顶部