$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