2014-01-26 2 views
8

Когда я возвращаю одну строку из таблицы, чтобы собрать результаты, которые я обычно использую, например:Mysqli FETCH_ASSOC против fetch_array

$info = $result->fetch_assoc(); 

В чем разница между этим и:

$info = $result->fetch_array(); 

ли есть ли причина использовать один над другим, возвращая только одну строку, или это просто личное предпочтение?

+2

Разница ** явно ** видно из справочной страницы –

+7

Они оба возвращают ассоциативный массив, мой вопрос: зачем использовать один над другим? Насколько мне известно, руководство не отвечает на этот вопрос. –

+1

см. Здесь http://www.spearheadsoftwares.com/tutorials/php-performance-benchmarking/50-mysql-fetch-assoc-vs-mysql-fetch-array-vs-mysql-fetch-object –

ответ

16

Это все о производительности

fetch_array() возвращает один массив с обеих цифровых клавиш, и ассоциативные строки (имена столбцов), так что здесь вы можете либо использовать $row['column_name'] или $row[0]

Где, как fetch_assoc() будет return string с индексированным массивом ключей и без числового массива, поэтому у вас не будет возможности использовать цифровые клавиши, такие как $row[0].

Так что последний лучше по производительности по сравнению с fetch_array() и, очевидно, использование названных индексов намного лучше по сравнению с числовыми индексами.

+3

Довольно точно начало этого ответа неверно. fetch_array() возвращает один массив с двумя типами значений внутри него. –

+1

Фактически, при возврате одной строки я не смог использовать массив fetch с именем столбца. Я должен был переключиться на выбор, и он работал ... –

6

fetch_array возвращает значение с индексированием. Но Fetch_assoc просто возвращает значение.

, например fetch_array возвращает

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

здесь место массив 0 содержит 11 также это имя расположение 'идентификатор'.

одно и то же FETCH_ASSOC воля возвращает

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

означает просто возвращает значение.

2

(РНР 5) От: http://php.net/manual/en/mysqli-result.fetch-array.php

mysqli_result :: fetch_array - mysqli_fetch_array - извлекает результирующий ряд как ассоциативный, числовой массив, или как

Так эффективно, fetch_array() и fetch_assoc() могут быть по существу эквивалентными вызовами. Что касается производительности, я рекомендую использовать любой вызов, который приводит к получению более читаемого кода, и беспокоится только о производительности после того, как вы четко определили вызов как проблему производительности. Скорее всего, у вас есть более серьезные проблемы с производительностью, когда вы меньше всего этого ожидаете.

Смежные вопросы