在这个[I-believe]着名的循环条件中
($row = $result->fetch())
(其中$ result是PDOStatement对象)$ row的类型是什么?它是“数组”还是“数组容器”?数组和包含数组的变量之间是否存在差异?!
我特别问这个问题,因为如果没有任何区别,那么我应该能够在完成循环之后将我的行全部放在$ row变量中,但事实并非如此,我需要另一个数组为我保留每一行(语法也不同,我需要在该数组的名称前面添加空括号来添加元素)
(根据我的教程,fetch()是PDOStatement对象的一种方法,它将表格的下一行作为数组返回。)
答案 0 :(得分:2)
实际上
$row
是一个运行时数组变量,每次循环(while
循环)运行时都会重新创建。之前的值将不可用。这就是为什么你必须将它的数据保存到另一个静态创建的数组变量。
这种娱乐是否是while循环的内在品质?
Simon.B不,不是。 你可以尝试
$row = [];
while($row[] = $result->fetch()){};
print_r($row);
并检查。
更好的替代 是使用fetchAll();
但是为什么上面这个应用程序不经常使用: -
因为上面的方法会在循环运行时一次又一次地将整个数组加载到Memory中,然后将数组赋值给它。
当 使用运行时变量并进行赋值时,每次都不会加载整个数组,只会完成赋值。