在数组的每个位置获取数组函数加倍值?

时间:2012-10-16 19:18:03

标签: php mysql arrays fetch

我从这个函数中得到了奇怪的行为。

输入

    public function fetch_array($result_set) 
{
        $rows = array();
        while ($row = mysql_fetch_array($result_set)) 
        {
            $rows[] = $row;
            print_r($row);
            break;
        }
        return $rows;

}

我已经使该函数运行一次,但它与我的MySQL查询结果重复了一行。

输出

Array ( [0] => Sarah [first_name] => Sarah [1] => Palin [second_name] => Palin ) 

应该是

正确输出

Array ( [first_name] => Sarah [second_name] => Palin ) 

我使用了这个SO问题的例子

Use mysql_fetch_array() with foreach() instead of while()

不是我的查询或Mysql结果错误

http://i.imgur.com/CZnIF.png

enter image description here


这里出了什么问题?

6 个答案:

答案 0 :(得分:4)

这不是错误,而是mysql_fetch_array() http://us.php.net/manual/en/function.mysql-fetch-array.php的预期行为

您可以设置result_type标记,也可以只使用mysql_fetch_assoc()http://us.php.net/manual/en/function.mysql-fetch-assoc.php

答案 1 :(得分:2)

使用mysql_fetch_array时,请输入MYSQL_ASSOC标志。

编辑:这是您的代码,并进行了适当的更改

while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC)) 

此外,您可以通过提供MYSQL_NUM

来获取数字索引

答案 2 :(得分:1)

你得到一个结果并且想要另一个结果的原因是因为你在一个新数组($ rows)中推送一个数组($ row)。通过推送数组中的某些内容(您使用的括号),您将获得一个自动递增键。

答案 3 :(得分:1)

试试这个:

$rows['name'] = $row['name'];
$rows['second_name] = $row['second_name'];

...

而不是

$rows[] = $row;

答案 4 :(得分:1)

默认情况下,mysql_fetch_array每个数据库列都有两个键 - 一个带有数字键,另一个带有关联键。 你可以这样做只告诉它取数字键:

mysql_fetch_array($result, MYSQL_NUM);

http://us2.php.net/manual/en/function.mysql-fetch-array.php

答案 5 :(得分:1)

这是完全正常和预期的行为。如果您只想要关联数组,请使用

while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC))