PDO MySQL fetchAll(), используя удвоенную необходимую память в результате?

Когда я использую ->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

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

Да. См. manual:

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

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

$result = $sth->fetchAll(PDO::FETCH_ASSOC);