PDO MySQL fetchAll () использует двойную необходимую память в результате? - PullRequest
13 голосов
/ 27 февраля 2011

Когда я использую ->fetchAll() с PDO, результирующий массив выглядит так, когда я делаю print_r():

Array
(
    [0] => Array
        (
            [week] => 2006-03-05
            [0] => 2006-03-05
            [ath] => 112.89166667
            [1] => 112.89166667
        )

    [1] => Array
        (
            [week] => 2006-03-12
            [0] => 2006-03-12
            [ath] => 260.04527778
            [1] => 260.04527778
        )

    [2] => Array
        (
            [week] => 2006-03-19
            [0] => 2006-03-19
            [ath] => 219.23472222
            [1] => 219.23472222
        )

и т. Д. И т. Д.

Являются ли полученные значенияхранится дважды в памяти?Один под индексом числового массива, таким как 0 и 1, а другой под его именованным индексом, таким как week или ath?

Мне в основном просто любопытно.Я не ожидаю, что это сильно повлияет на мою программу.Спасибо.

1 Ответ

19 голосов
/ 27 февраля 2011

Сохраняются ли полученные значения дважды в памяти?

Да. См. руководство :

PDO :: FETCH_BOTH (по умолчанию): возвращает массив, проиндексированный как по имени столбца, так и по номеру столбца с 0 индексами, как возвращено в вашем наборе результатов

Используйте необязательный параметр $fetch_style, чтобы изменить поведение fetchAll ().

$result = $sth->fetchAll(PDO::FETCH_ASSOC);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...