使用foreach在PHP中从DB检索数据

使用foreach在PHP中从DB检索数据,php,arrays,foreach,Php,Arrays,Foreach,我有一个sql来选择与用户id匹配的所有行,然后使用$dataFromDB=$stmtA->fetchAll()将其存储到数组中 问题在于使用foreach时如下所示: foreach( $dataFromDB as $k => $row ){ $json_response['SS'] = $row[2]; $json_response['MN'] = $row[4]; $json_response['MX'] = $row[5]; } 仅获取: [SS] =&g

我有一个sql来选择与用户id匹配的所有行,然后使用
$dataFromDB=$stmtA->fetchAll()将其存储到数组中

问题在于使用foreach时如下所示:

foreach( $dataFromDB as $k => $row ){
    $json_response['SS'] = $row[2];
    $json_response['MN'] = $row[4];
    $json_response['MX'] = $row[5];
}
仅获取:

[SS] => humidity
[MM] => 37
[MX] => 57
我想收到

[SS] => temperature, humidity
[MM] => 19, 37
[MX] => 35, 57
如何将[0]和[1]存储到一个数组中,然后显示它们?我认为问题出在foreach中,我的目标是保存到多维数组[],在那里我可以使用$json_response[1][1]访问第二个数组(MM)和第二个值。

像这样尝试

$ss = $mn = $mx = "";
foreach( $dataFromDB as $k => $row ){
    $ss .= $row[2];
    $mn .= $row[4];
    $mx .= $row[5];
}

$json_response['SS'] = rtrim($ss,",");
$json_response['MN'] = rtrim($mn,",");
$json_response['MX'] = rtrim($mx,",");
您可以直接从数据库的查询中获取数据,而不是循环数据。 像这样的

GROUP_CONCAT(table_name.column_name SEPARATOR ', ')

并使用
分组依据

您当前正在覆盖这些值。而是将它们作为单独的数组元素添加:

//initialize with empty arrays
$json_response=['SS'=>[], 'MN'=>[], 'MX'=>[]];

foreach( $dataFromDB as $k => $row ){
    $json_response['SS'][] = $row[2];
    $json_response['MN'][] = $row[4];
    $json_response['MX'][] = $row[5];
}
这将生成您在上一段中提到的多维数组(而不是上面显示的逗号分隔值)

如果希望使用逗号分隔的值,可以在以下情况下对数组进行内爆:

foreach($json_response as &$val)
    $val = implode(',', $val);

但如果您可以直接从查询中获取逗号分隔的值,则无需使用循环。谢谢,伙计,我将尝试更改查询以查看收到的内容。如果没有,我会尝试环,我会说,首先完成循环,然后尝试QueR.并考虑答案,如果它是有益的:
foreach($json_response as &$val)
    $val = implode(',', $val);