筛选多维数组


Filtering a multidimensional array

我在数据库中有下表:

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?

要添加到注释中,强烈建议不要使用 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);