在数组的每个位置获取数组函数加倍值?
Posted
技术标签:
【中文标题】在数组的每个位置获取数组函数加倍值?【英文标题】:Fetch array function doubling values in each position of array? 【发布时间】:2012-10-06 23:31:37 【问题描述】:我从这个函数中得到了奇怪的行为。
输入
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
这里出了什么问题?
【问题讨论】:
$rows
数组与mysql_fetch_array
返回的$row
数组完全相同。那么,为什么不在获取它之后返回 $row
呢?附带说明:不要使用mysql_
函数。它们很快就会从 php 中删除。并使用mysql_fetch_assoc
而不是mysql_fetch_array
。
技术上不一样,它是一个包含 $row 数组的数组,但你的观点是有效的。
【参考方案1】:
这不是错误,这是 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
【讨论】:
当然,只需将$row = mysql_fetch_array($result_set)
替换为$row = mysql_fetch_assoc($result_set)
【参考方案2】:
当使用 mysql_fetch_array 时,向它提供 MYSQL_ASSOC 标志。
编辑:这是您的代码,进行了适当的更改
while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC))
此外,您可以通过输入 MYSQL_NUM 来仅使用数字索引来获取它们
【讨论】:
【参考方案3】:您得到一个结果并想要另一个结果的原因是因为您将一个数组($row)推入一个新数组($rows)中。通过在数组中推入一些东西(你使用的括号),你会得到一个自动递增的键。
【讨论】:
【参考方案4】:试试这个:
$rows['name'] = $row['name'];
$rows['second_name] = $row['second_name'];
...
而不是
$rows[] = $row;
【讨论】:
谢谢,但是如果我想将此功能与其他数据一起使用,我认为这不会起作用【参考方案5】:默认情况下,mysql_fetch_array
的每个数据库列都有两个键——一个是数字键,一个是关联键。
你可以这样做来告诉它只获取数字键:
mysql_fetch_array($result, MYSQL_NUM);
http://us2.php.net/manual/en/function.mysql-fetch-array.php
【讨论】:
【参考方案6】:这是完全正常和预期的行为。如果您只想要关联数组,请使用
while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC))
【讨论】:
以上是关于在数组的每个位置获取数组函数加倍值?的主要内容,如果未能解决你的问题,请参考以下文章