Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 返回多维数组的MySQL数据库搜索?_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

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']]