$array = [];
$array[] = new stdClass; //will return an array
$array = new stdClass; //will not
看起来很奇怪,因为$ array被声明为一个数组。忘记括号 $array = new stdClass;
和$array
不再是一个数组。
$array = [];
$array[] = new stdClass; //will return an array
$array = new stdClass; //will not
看起来很奇怪,因为$ array被声明为一个数组。忘记括号 $array = new stdClass;
和$array
不再是一个数组。
$array[] = new stdClass;
将新的stdClass添加到空数组$array
中。
$array = new stdClass;
用新的stdClass替换空数组$array
。
$array = ...
和
$array[] = ...
做的非常不同的事情。第一个创建或覆盖变量,第二个追加到现有的,假设它存在。
所以,当你说
$array[] = new stdClass;
你说“追加新stdClass已经把现有的阵列”。该变量仍然是一个数组,它现在只有一个额外的元素。
如何在PHP中首次声明一个变量时,与覆盖它时发生的变化没有什么区别 - 原始代码完全消失,并替换为您分配的任何代码。
'$ var [] = new stdClass; //将返回一个数组' '$ var = new stdClass; //不会'是变量的名称什么让你感到困惑? – teeyo
_It看起来很奇怪,因为$ array被声明为一个数组...不,它不会使用'stdClass'和'[]'覆盖数组,您将追加新的'stdClass'元素数组 –
而'$ array ='foo''会将'$ array'变成一个字符串...如果'$ array = []'使它成为一个数组,为什么与另一个数据类型相同呢? – deceze