当我从表中返回一行时,为了收集我通常使用的结果,例如:
$info = $result->fetch_assoc();
有什么区别:
$info = $result->fetch_array();
当只返回一行时,是否有理由使用其中一个,或者仅仅是个人偏好?
答案 0 :(得分:22)
这完全取决于性能
fetch_array()
返回一个包含数字键和关联字符串(列名称)的数组,因此您可以使用$row['column_name']
或$row[0]
fetch_assoc()
将返回字符串索引键数组而不返回数值数组,因此您将无法使用 之类的数字键。$row[0]
因此,与fetch_array()
相比,后者的性能更好,显然使用命名索引与数字索引相比要好得多。
答案 1 :(得分:9)
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
表示只返回值。
答案 2 :(得分:2)
(PHP 5) 来自:http://php.net/manual/en/mysqli-result.fetch-array.php
mysqli_result :: fetch_array - mysqli_fetch_array - 获取结果行 作为关联,数字数组或两者
如此有效,fetch_array()
和fetch_assoc()
可以是基本上等效的调用。至于性能,我建议使用哪个调用可以产生更易读的代码,并且只有在将调用明确地识别为性能问题后才关注性能。您最不希望出现的问题更可能是您遇到了更严重的性能问题。
答案 3 :(得分:0)
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'