按名称将数组项与分隔符组合?

时间:2012-10-27 01:42:51

标签: php mysql

我有以下PHP代码,它运行MySQL查询并将结果作为数组返回:

function mysql_resultTo2DAssocArray ( $result) {
    $i=0;
    $ret = array();
    while ($row = mysql_fetch_assoc($result)) {
        foreach ($row as $key => $value) {
            $ret[$i][$key] = $value;
            }
        $i++;
        }
    return ($ret);
    }
$compare = mysql_resultTo2DAssocArray(mysql_query("SELECT Temp.School, Temp.Status, Snow.Token FROM Temp
 JOIN Snow ON Temp.School = Snow.School"));

结果如下:

Array
(
    [0] => Array
        (
            [School] => School Name 1
            [Status] => Delayed Two Hours
            [Token] => Token1
        )

    [1] => Array
        (
            [School] => School Name 1
            [Status] => Delayed Two Hours
            [Token] => Token2
        )

)

如果Token项对每个项都相同,是否可以在这些数组中用逗号组合School项?

有一件事是,全局数组中可能有更多数组,具有不同的School名称,不应该分组,而是单独使用。基本上,只有在School相同时才能进行分组。它也可能有两个以上的令牌。

1 个答案:

答案 0 :(得分:2)

SELECT Temp.School, Temp.Status, GROUP_CONCAT(Snow.Token) Tokens
FROM Temp JOIN Snow USING (School)
GROUP BY Temp.School

这不完全有效,因为Status列未汇总或属于GROUP BY;但MySQL通常允许它(有一个选项可以禁止它,我不记得这个名字)。如果有不同状态值的行,它将任意选择其中一行;你没有说明不同状态会发生什么。