使用多维数组按类别分组和显示MySQL结果

时间:2015-01-14 04:34:07

标签: php mysql

我有以下脚本,它从MySQL查询创建一个多维数组,并根据类别打印结果:

脑脊液(感染)
葡萄糖血清蛋白(尿液)

血气
碳酸氢盐(液体)
pH(液体)
氧分压(张力)(pO2)

肌酐清除率 肌酐(液体)
肌酐(24小时尿)

$test_groups = array();

$query = "SELECT * FROM 
lab_test, 
model_lab_test_lookup, 
lab_test_group 
WHERE 
lab_test.lab_test_pk = model_lab_test_lookup.lab_test_fk
 AND 
model_lab_test_lookup.lab_test_group_fk = lab_test_group.lab_test_group_pk
 AND 
model_lab_test_lookup.pathway_fk = '$pathway' 
GROUP BY lab_test.lab_test_pk";

$result = mysql_query($query, $connection) or die(mysql_error());

while ($row = mysql_fetch_assoc($result)){

$test_groups[$row['group_name']][] = $row['lab_test'];

}

foreach($test_groups as $group_name => $tests){
        echo '<strong>' . $group_name . '</strong><br />';
        foreach($tests as $test){
               echo $test . '<br />';
        }
        echo '<p>';
    }

现在我想添加除$row['lab_test'](测试名称)之外的列,例如$row['lab_test_pk']$row['interval'],并且能够像foreach中那样访问这些列}循环。

喜欢

$test_groups[$row['group_name']] = array(
                    'test_pk' => $row['lab_test_pk'],
                    'test_name' => $row['lab_test'],
                    'interval'  => $row['interval']
                    );

这样做的正确方法是什么,然后访问最后一个foreach循环中添加的列?

2 个答案:

答案 0 :(得分:1)

$row['lab_test_pk'].','.$row['lab_test'].','.$row['interval'];

尝试以上行并使用。追加。

答案 1 :(得分:1)

使用@ N.M.N提供的部分解决方案我有以下工作:

while ($row = mysql_fetch_assoc($result)){

    $test_groups[$row['group_name']][] = $row['lab_test_pk'].','.$row['lab_test'].','.$row['interval'];

  }

  foreach($test_groups as $group_name => $tests){
    echo '<strong>' . $group_name . '</strong><br />';
    foreach($tests as $test){
        list($test_pk, $test_name, $test_interval) = explode(',', $test);
        echo $test_pk . '<br />';
        echo $test_name . '<br />';
        echo $test_interval . '<br />';
    }
    echo '<p>';
}