在while循环中重复的Mysql数组值

时间:2011-11-18 16:24:16

标签: php mysql arrays

我有一个查询,其中来自唯一选项的输出在while循环belp查询中重复使用mysql dump

CREATE TABLE `txt` (
      `option` varchar(10) NOT NULL,
      `username` varchar(100) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `txt` VALUES ('a', 'ashok');
INSERT INTO `txt` VALUES ('a', 'sachin');
INSERT INTO `txt` VALUES ('b', 'parvez');
query:
$result = mysql_query("SELECT option, name from txt");

while ($row = mysql_fetch_array($result)) {
 $option = $row['option'];
 $name   = $row['username'];
 $array[$option] = $name;
}

print_r($array);

实际输出:

Array ( [a] => Array ( [name] => Array ( [0] => ashok [1] => sachin ) 
Array ( [b] => Array ( [name] => Array ( [0] => ashok [1] => sachin [2] => parvez)

预期产出:

Array ( [a] => Array ( [name] => Array ( [0] => ashok [1] => sachin )
Array ( [b] => Array ( [name] => Array ( [0] => parvez)

请告诉我在这个查询中犯了什么错误

1 个答案:

答案 0 :(得分:0)

您的代码根本不会产生您在“实际”下声称的结果。您继续覆盖循环中的$array[$option],而您想要做的是将值添加到数组中。

尽管如此,以下代码将生成您在“预期”下命名的结果:

$result = mysql_query("SELECT `option`, `username` from `txt`");
while ($row = mysql_fetch_array($result)) {
    $option = $row['option'];
    $name   = $row['username'];
    $array[$option]['name'][] = $name;
}

结果:

Array
(
    [a] => Array
        (
            [name] => Array
                (
                    [0] => ashok
                    [1] => sachin
                )
        )
    [b] => Array
        (
            [name] => Array
                (
                    [0] => parvez
                )
        )
)