将非数字键值附加到数组

时间:2012-05-18 01:32:08

标签: php

尝试在我的DAO中将数据库结果集作为数组返回:

我想在下面的代码中将字符串键值附加到数组$retval。但是,数组每次迭代都会被覆盖而不是被附加到。

所以在循环结束时,我最终得到1个键值而不是n对(从数据库中检索n行)。我做错了什么?

$retval = array();
while ($row = mysql_fetch_assoc($result)) {

    foreach($columns as $var) {
        $retval[$var]=$row[$var];
    }

}
var_dump($retval);

$retval最终为["name"=>"Japan","capital"=>"Tokyo"],而不是预期的["name"=>"Korea","capital"=>"Seoul"...."Japan"=>"Tokyo"],其中列是名称和资本。

2 个答案:

答案 0 :(得分:2)

我必须看看你的专栏是什么,但不应该是:

$retval = array();
while ($row = mysql_fetch_assoc($result)) {

  $retval[ $row['country'] ] = $row['capital'];

}

答案 1 :(得分:0)

这是因为你要覆盖相同的值(这里是列名。)类似于:

$retval['a'] = 1;
$retval['a'] = 2;
// ...

改为使用:

$retval[] = $row[$var];

HTH。