PDO MySQL fetchAll()在结果中使用双倍必要的内存?

时间:2011-02-26 22:44:10

标签: php pdo

当我将->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
        )

等等。

结果值是否在内存中存储了两次?一个在数字数组索引下,如01,另一个在其命名索引下,如weekath

我主要只是好奇。我不认为这会对我的程序产生重大影响。感谢。

1 个答案:

答案 0 :(得分:19)

  

结果值是否在内存中存储了两次?

是。请参阅manual

  

PDO :: FETCH_BOTH(默认值):返回由结果集中返回的列名和0索引列号索引的数组

使用可选的$fetch_style参数更改fetchAll()的行为方式。

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