如果我的表格如此:
user | language
-----|---------
john | english
john | french
john | spanish
是否有我可以运行的查询以便我回来:
["john"=>["english", "french", "spanish"]]
我试图避免做以下事情:
$john->languages = array();
foreach($results as $row){
array_push($john->languages, $row["language"]);
}
答案 0 :(得分:2)
这是传统方式
$user_languages = array();
foreach($result as $row) {
$user_languages[$row['user']][] = $row['language'];
}
答案 1 :(得分:2)
如果您使用PDO,则可以使用其FETCH_GROUP
选项:
$stmt = $db->prepare("SELECT user, language FROM table");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 0);
第三个参数是用于分组的零索引列号。参见
http://www.php.net//manual/en/pdostatement.fetchall.php
例如。