过滤多维数组

时间:2013-11-05 18:10:07

标签: php database

我在DB中有以下表格:

id | letter  
---|--------  
1  | A, B, C  
2  | D, E, F  
3  | A, C, E  
4  | B, D, F  
5  | G, I  
6  | H  

PHP代码:

<?php

require_once './conn.php';

$sql = "SELECT DISTINCT letter FROM letters ORDER BY letter ASC";
$res = mysql_query($sql);

if (mysql_num_rows($res) === 0 || mysql_num_rows($res) === NULL) {
    echo '0 result(s)';
} else {
    // while ($row = mysql_fetch_assoc($res)) {
    while ($row = mysql_fetch_assoc($res)) {
        echo $row['letter'] . ' / ';
    }
}

?>

好的,我会试着解释一下: 如果我运行上面的代码,它会返回A,B,C / D,E,F / A,C,E / B,D,F / G,I / H. 每组字母都是一个数组,哇,我发现了火。现在的问题是: 如何将所有结果放入单个数组和列表中,以便结果为A,B,C,D,E,F,G,H,I?

1 个答案:

答案 0 :(得分:0)

要添加评论,强烈建议不要使用mysql扩展名。它不支持预处理语句,您将在没有它们的情况下在代码中编写SQL注入漏洞。我知道这可能不会。然而,大多数都属于它。默认安全总是更好。

现在,你的愿望,无论是否是一个好主意:

$letters = array();
while ($row = mysql_fetch_assoc($res)) {
    $letters = array_merge($letters, preg_split('/\s*,\s*/', trim($row['letter'])));
}
$letters = array_unique($letters);
sort($letters);
相关问题