PHP:包含数组的数组和变量之间的区别?

时间:2018-02-06 06:20:57

标签: php arrays

在这个[I-believe]着名的循环条件中 ($row = $result->fetch())(其中$ result是PDOStatement对象)$ row的类型是什么?它是“数组”还是“数组容器”?数组和包含数组的变量之间是否存在差异?!

我特别问这个问题,因为如果没有任何区别,那么我应该能够在完成循环之后将我的行全部放在$ row变量中,但事实并非如此,我需要另一个数组为我保留每一行(语法也不同,我需要在该数组的名称前面添加空括号来添加元素)

(根据我的教程,fetch()是PDOStatement对象的一种方法,它将表格的下一行作为数组返回。)

1 个答案:

答案 0 :(得分:2)

实际上

$row是一个运行时数组变量,每次循环(while循环)运行时都会重新创建。之前的值将不可用。这就是为什么你必须将它的数据保存到另一个静态创建的数组变量。

这种娱乐是否是while循环的内在品质?

Simon.B不,不是。 你可以尝试

$row = []; 
while($row[] = $result->fetch()){};
print_r($row); 

并检查。

更好的替代 是使用fetchAll();

但是为什么上面这个应用程序不经常使用: -

因为上面的方法会在循环运行时一次又一次地将整个数组加载到Memory中,然后将数组赋值给它。

使用运行时变量并进行赋值时,每次都不会加载整个数组,只会完成赋值。