Php 将非数字键值附加到数组

Php 将非数字键值附加到数组,php,Php,尝试在my DAO中将DB resultset作为数组返回: 我想将字符串键值附加到下面代码中的数组$retval。但是,数组在每次迭代中都会被覆盖,而不是追加到 因此,在循环结束时,我得到的是1个键值,而不是n对(从数据库检索的n行)。我做错了什么 $retval = array(); while ($row = mysql_fetch_assoc($result)) { foreach($columns as $var) { $retval[$var]=$row[$

尝试在my DAO中将DB resultset作为数组返回:

我想将字符串键值附加到下面代码中的数组
$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”]
,其中列是名称和大写。

这是因为您正在覆盖相同的值(此处的列名)。类似于:

$retval['a'] = 1;
$retval['a'] = 2;
// ...
而是使用:

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

HTH.

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

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

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

}

对不起,我的例子不正确。必须进行编辑。基本上,我试图将DB行转换为一个数组,其中key是列名,value是列值,但最后一行被覆盖。$row已经是一个带有key=>value项的关联数组,对于表行,您是在使用哈希数组(关联数组)吗?例如:$row[0]=数组('name'=>'Japan','capital'=>'Tokyo'..)$行[1]=数组('name'=>'Korea','capital'=>'Seoul'..);如果是这样,您需要:while($row=mysql\u fetch\u assoc($result)){$retval[]=$row;}