2017-10-04 50 views
-1
$array = []; 

$array[] = new stdClass; //will return an array 
$array = new stdClass; //will not 

看起来很奇怪,因为$ array被声明为一个数组。忘记括号 $array = new stdClass;$array不再是一个数组。

+0

'$ var [] = new stdClass; //将返回一个数组' '$ var = new stdClass; //不会'是变量的名称什么让你感到困惑? – teeyo

+0

_It看起来很奇怪,因为$ array被声明为一个数组...不,它不会使用'stdClass'和'[]'覆盖数组,您将追加新的'stdClass'元素数组 –

+0

而'$ array ='foo''会将'$ array'变成一个字符串...如果'$ array = []'使它成为一个数组,为什么与另一个数据类型相同呢? – deceze

回答

0

$array[] = new stdClass;将新的stdClass添加到空数组$array中。

$array = new stdClass;用新的stdClass替换空数组$array

0
$array = ... 

$array[] = ... 

做的非常不同的事情。第一个创建或覆盖变量,第二个追加到现有的,假设它存在。

所以,当你说

$array[] = new stdClass; 

你说“追加新stdClass已经把现有的阵列”。该变量仍然是一个数组,它现在只有一个额外的元素。

如何在PHP中首次声明一个变量时,与覆盖它时发生的变化没有什么区别 - 原始代码完全消失,并替换为您分配的任何代码。

相关问题