PHP函数在同一个数组中生成一个数组的两次迭代

时间:2013-07-21 18:17:29

标签: php class

我有一个从NoSQL数据库获取数据的函数,如果它不可用,那么它会进入MySQL数据库来获取数据,但问题是,该函数将数据放入数组两次而且我无法弄清楚原因。

预期结果

array(2) { 
["id"]=> string(2) "30" 
["username"]=> string(8) "Username" }

实际结果

array(4) { 
[0]=> string(2) "30" 
["id"]=> string(2) "30" 
[1]=> string(8) "Username" 
["username"]=> string(8) "Username" }

代码

删除与问题无关的代码,并替换为伪代码注释。

        $Connection = $this->Connect("MySQLi");
        $Data = MySQLi_Fetch_Array(

            MySQLi_Query($Connection["MySQLi"], $Options["Query"])

        );

        echo "Got array (MySQLi).";

值得注意的是字符串“Got array(MySQLi)”。只出现一次。

2 个答案:

答案 0 :(得分:2)

MySQLi_Fetch_Array在一个数组中获取重复数据 - 同时使用数字和关联索引

使用mysqli_fetch_assoc代替只有关联

答案 1 :(得分:1)

mysqli_fetch_array()使用参数resulttype,默认情况下设置为MYSQLI_BOTH

  

通过使用MYSQLI_ASSOC常量,此函数的行为与mysqli_fetch_assoc()相同,而MYSQLI_NUM的行为与mysqli_fetch_row()函数相同。 最终选项MYSQLI_BOTH将创建一个包含两者属性的数组。

mysqli_fetch_assoc获取关联数组,而mysqli_fetch_row获取带有数字索引的数组。

带参数mysqli_fetch_array

MYSQLI_BOTH将获取同一数组中的命名(关联)索引和数字索引。