Mysql приводит к PHP - массивы или объекты?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

28
задан A J 22 January 2016 в 09:22
поделиться

8 ответов

Мудрый производительностью не имеет значения, что Вы используете. Различие - то, что mysql_fetch_object возвращает объект:

while ($row = mysql_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
}

mysql_fetch_assoc () возвращает ассоциативный массив:

while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
}

и mysql_fetch_array () возвращает массив:

while ($row = mysql_fetch_array($result)) {
    echo $row[0];
    echo $row[1] ;
}
40
ответ дан Vertigo 28 November 2019 в 02:34
поделиться

Что следует иметь в виду: массивы можно легко добавить в кэш памяти (eaccelerator, XCache, ..), а объекты - нет (их нужно сериализовать при хранении и не сериализовать при каждом извлечении!).

Вы можете переключиться на использование массивов вместо объектов, когда вы хотите добавить поддержку кэша памяти - но к этому времени вам, возможно, придется уже менять большой код, который использует возвращаемые значения ранее использованного типа объекта.

5
ответ дан blueyed 28 November 2019 в 02:34
поделиться

Выборка массива с mysql_fetch_array() позволяет Вам цикл через набор результатов или через цикл foreach или через для цикла. mysql_fetch_object() не может быть пересечен для цикла.

Не уверенный, если бы это даже имеет значение очень, просто думал, что я упомянул бы его.

4
ответ дан kapa 28 November 2019 в 02:34
поделиться
while ($Row = mysql_fetch_object($rs)) {
    // ...do stuff...
}

... то, как я всегда делал его. Я предпочитаю использовать объекты для наборов данных вместо массивов, так как они организуют данные немного лучше, и я знаю, что, намного менее вероятно, попытаюсь добавить произвольные свойства к объекту, чем я должен попытаться добавить индекс к массиву (в течение первых нескольких лет, я использовал PHP, я думал, что Вы не могли только присвоить произвольные свойства объекту, таким образом, они внушены, чтобы не сделать это).

1
ответ дан dirtside 28 November 2019 в 02:34
поделиться

Я думаю, что различие между всеми этими функциями незначительно, особенно, когда сравнено для кодирования удобочитаемости.

, Если Вы обеспокоены этим видом оптимизации, используйте mysql_fetch_row(). Это является самым быстрым, потому что это не использует ассоциативные массивы (например, $row [2]), но является самым легким повредить Ваш код с ним.

0
ответ дан cubex 28 November 2019 в 02:34
поделиться

Мудрый скоростью, mysql_fetch_object() идентично mysql_fetch_array() и почти так же быстр как mysql_fetch_row().

кроме того, с mysql_fetch_object() Вы только будете в состоянии получить доступ к полевым данным названиями соответствующего поля.

0
ответ дан kapa 28 November 2019 в 02:34
поделиться

Я голосую против mysql_fetch_array()

Поскольку вы возвращаете как численно проиндексированные столбцы, так и имена столбцов, это создает массив, который в два раза больше. Хорошо, если вам не нужно отлаживать код и просматривать его содержимое. Но для остальных из нас становится сложнее отлаживать, так как вам приходится пробираться вдвое больше данных в странном формате.

Иногда я сталкиваюсь с проектом, который использует эту функцию, а затем при отладке я думаю, что что-то пошло не так, потому что у меня есть числовые столбцы, смешанные с моими данными.

Так что во имя здравомыслия, пожалуйста, не используйте эту функцию, это усложняет обслуживание кода

-2
ответ дан SeanDowney 28 November 2019 в 02:34
поделиться

mysql_fetch_array затрудняет чтение вашего кода = a кошмар. Вы не можете сразу увидеть, с какими данными имеет дело ваш объект. Это немного быстрее, но если это важно для вас, вы обрабатываете так много данных, что PHP, вероятно, не подходит.

mysql_fetch_object имеет некоторые недостатки, особенно если вы основываете на нем уровень базы данных.

  • Имена столбцов могут быть недопустимыми идентификаторами PHP, например, tax-allowance или user.id , если драйвер базы данных дает вам имя столбца, указанное в запросе.

30
ответ дан 28 November 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: