2014-01-20 22 views
3

Hy 我有一個foreach循環,將數組鍵添加到另一個數組。我想知道是否可以安全地增加(使用++)和未初始化元素。 目前我的代碼是:增加不初始化數組值在PHP

foreach($SociBdP as $id=>$socio) 
{ 
    if(!isset($provenienza[$option_name])) 
     $provenienza[$option_name]=0; 
    $provenienza[$option_name]++; 
} 

我想知道,如果它的安全做

foreach($SociBdP as $id=>$socio) 
{ 
    $provenienza[$option_name]++; 
} 

,或者是有風險的(類似於C++),數組ISN的默認值「T 0

+0

我假設你的意思是「安全」而不是「保存」?在你的問題中,你不清楚在foreach中聲明的變量和$ provenienza變量之間的關係是什麼,所以很難給出任何建議。 –

回答

0

不,正確的是:

foreach($SociBdP as $id=>$socio) 
{ 
    if(!isset($provenienza[$option_name])) 
     $provenienza[$option_name]=0; 
    $provenienza[$option_name]++; 
} 

你必須確保數組CON在增加它之前保留鍵。

4

雖然這是一個documented behaviour你可以信任:

這是沒有必要的初始化在PHP變量,但這是個非常 好的做法。未初始化的變量的默認值爲 ,它們的類型取決於它們的使用環境 - 布爾型 默認爲FALSE,整數和浮點型默認爲零,字符串(例如用於echo的 )設置爲空字符串,並且陣列變成空的 陣列。

...它也可以防止你採取通知的好處,因爲你需要降低了你的error reporting設置,這樣他們就不會在發展階段顯示:

var_dump($foo); 
Notice: Undefined variable: foo in D:\tmp\borrame.php on line 3 
NULL 

聲明通常被新手看作是一種煩惱,但它們實際上是一種發現愚蠢拼寫錯誤的好工具。