Php 返回多维数组的MySQL数据库搜索?
如果我有一张这样的桌子:Php 返回多维数组的MySQL数据库搜索?,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,如果我有一张这样的桌子: user | language -----|--------- john | english john | french john | spanish 我是否可以运行查询以便返回: ["john"=>["english", "french", "spanish"]] 我试图避免做一些类似以下的事情: $john->languages = array(); foreach($results as $row){ array_push($john-&g
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"]);
}
这是传统的方式
$user_languages = array();
foreach($result as $row) {
$user_languages[$row['user']][] = $row['language'];
}
如果使用PDO,则可以使用其
FETCH\u组
选项:
$stmt = $db->prepare("SELECT user, language FROM table");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 0);
第三个参数是用于分组的零索引列编号。看
例如。Mysql不返回“array”,可以说,它返回“rows”——无论出于何种目的,它都是一个“array”,但无法获取包含其他行的行——或多维数组。您无法使用php从mysql返回的一维行中创建多维数组。@MarkM,这正是我所担心的。我正要这么做的时候,我想了一下,意识到它的效率太低了,希望有更好的方法。我不认为它的效率太低-使用下面的制造商的方法似乎很标准。然而,看看巴尔马的答案——也许终究有一种方法……很好的解决方案+1.刚刚测试过-如果删除
0
参数(),它就可以正常工作。结果:[['John']=>['english'、'french'、'spanish']]
。