如果我有一个表,看起来像这样:
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"]);
}
如果你使用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 为例子。这是常规方法
$user_languages = array();
foreach($result as $row) {
$user_languages[$row['user']][] = $row['language'];
}