2017-10-04 93 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中首次聲明一個變量時,與覆蓋它時發生的變化沒有什麼區別 - 原始代碼完全消失,並替換爲您分配的任何代碼。

相關問題