【问题标题】:Mysqli fetch_assoc vs fetch_arrayMysqli fetch_assoc 与 fetch_array
【发布时间】:2021-12-26 00:26:20
【问题描述】:

当我从表中返回一行时,收集我通常使用的结果,例如:

$info = $result->fetch_assoc(); 

这和有什么区别:

$info = $result->fetch_array();

只返回一行时是否有理由使用一个而不是另一个,还是只是个人喜好?

【问题讨论】:

标签: php mysqli


【解决方案1】:

一切都与性能有关

fetch_array() 返回一个数组,其中包含数字键和关联字符串(列名),因此您可以在这里使用$row['column_name'] 或$row[0]

fetch_assoc() 将返回字符串索引键数组而不返回数字数组,因此您将无法选择使用像 $row[0] 这样的数字键。

因此,与fetch_array() 相比,后者的性能更好,并且显然使用命名索引与数字索引相比要好得多。

【讨论】:

  • 实际上,当返回单行时,我无法使用列名的 fetch 数组。我不得不切换到 fetch assoc 并且它非常有效......
  • 与数字索引相比,使用命名索引显然要好得多:这是个人意见,不是事实。通常这是正确的,但是在某些情况下处理编号的列会更容易。例如,如果 SQL 命令是自动生成的。
【解决方案2】:

fetch_array 返回带有索引的值。 但是 Fetch_assoc 只是返回值。

例如 fetch_array 返回

[0] => 11
[id] => 11
[1] => 2014-12-29
[date] => 2014-12-29

此处数组位置 0 包含 11,此位置名称为 'id'。

fetch_assoc 将返回相同的东西

[id] => 11
[date] => 2014-12-29

表示只返回值。

【讨论】:

    【解决方案3】:

    (PHP 5) 来自:http://php.net/manual/en/mysqli-result.fetch-array.php

    mysqli_result::fetch_array -- mysqli_fetch_array -- 获取结果行 作为关联、数值数组或两者兼而有之

    因此,fetch_array() 和 fetch_assoc() 本质上可以是等效的调用。至于性能,我建议使用导致代码可读性更高的任何调用,并且仅在您清楚地将调用确定为性能问题后才关注性能。您更有可能在最不希望出现的地方遇到更严重的性能问题。

    【讨论】:

      【解决方案4】:

      fetch_array 会给你键/值对和索引,而fetch_assoc 只会给你键/值对而不是索引。例如:

      //fetch_array output be like:
      [name]=>'someName'
      [0]=>'someName'
      [email]=>'some@some.com'
      [1]=>'some@some.com'
      
      //fetch_assoc output be like
      
      [name]=>'someName'
      [email]=>'some@some.com'
      

      【讨论】:

        猜你喜欢
        • 2015-02-28
        • 2010-11-07
        • 2013-10-05
        • 2019-08-25
        • 1970-01-01
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多