如何在PHP中将数组转换为地图?

时间:2011-03-30 02:07:06

标签: php

这是基于我提出的上一个问题。 假设我已经运行了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"]

4 个答案:

答案 0 :(得分:8)

$map = array();
foreach ($mysqlResult as $row) {
    $map[$row['name']][] = $row['language'];
}

答案 1 :(得分:2)

您可以使用group by:

使用mysql

http://www.tizag.com/mysqlTutorial/mysqlgroupby.php

答案 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;
}, []);