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

2022-08-31 00:51:49

当我与PDO一起使用时,当我执行以下操作时,生成的数组如下所示:->fetchAll()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
        )

等等,等等。

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

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


答案 1

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

是的。请参阅手册

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

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

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

答案 2

推荐