这是基于我提出的上一个问题。
假设我已经运行了SQL查询并将以下内容接收到变量$res
中:
name | language
-------------------------
bob | English
bob | Dutch
Sally | English
Sally | Spanish
Sally | German
即。 $res["name"]
目前等于第一列等。
是否有PHP函数或函数序列(不编写循环)将$res
转换为映射,以便我可以编写$res["bob"]
并接收数组["English", "Dutch"]
或{{ 1}}并接收$res["Sally"]
?
答案 0 :(得分:8)
$map = array();
foreach ($mysqlResult as $row) {
$map[$row['name']][] = $row['language'];
}
答案 1 :(得分:2)
您可以使用group by:
使用mysql答案 2 :(得分:1)
如果有本机函数,无论如何都会在内部使用循环。
$res = array();
foreach($old as $value) {
$res[$value['name']][] = $value['language'];
}
编辑:我认为这是一对多的关系:)
答案 3 :(得分:0)
另一种选择是使用array_reduce
:
$rows = array_from_sql_query();
$map = array_reduce($rows, function($res, $row) {
$res[$row['name']][] = $row['language'];
return $res;
}, []);