2012-05-30 54 views
1

如果您只是想以這種方式將值分配給變量:

$array[]="value 1"$array[]="value 2"

您是否首先必須聲明$array=array()?顯然你不需要,因爲它沒有它,但爲什麼你會那樣做呢?或者做什麼的好處?

回答

1

你所描述的不是一個聲明,而是一個初始化。你沒有聲明$ array是一個數組,你正在給它賦值(空數組)。

這樣的初始化可以被用來建立一個範圍,也許它可以使代碼更易讀(雖然我不能看到),但通常當你特別想要一個空數組它只是做。經典的例子是當使用[]語法附加到數組。考慮以下內容:

$a = 'old value'; 
$a = array(); 
$a[] = 1; 
$a[] = 2; 
$a[] = 3; 

沒有第二行,這將產生一個錯誤。

順便提及,所述的陣列()命令不是普通的功能。它是一種語言結構,從PHP 5.4開始,您可以用較短的[]語法替換它:

$a = 'old value'; 
$a = []; 
$a[] = 1; 
$a[] = 2; 
$a[] = 3; 
0

主要用於文件的目的。它提醒開發人員,該變量旨在用作數組。

作爲一個例子,在笨,可以將值傳遞給一個視圖,但它們必須是一個數組或拋出異常。聲明變量爲array()提醒您,即使您打算傳遞單個值,也必須將其作爲元素插入到數組中。

2

我認爲大部分可讀性。有人可能(或者你自己5個月後)出現並想知道$ array []來自哪裏,因爲它「神奇地出現在代碼中」。用$ myArray = array(),你至少知道(嘿,這是我們第一次看到變量的地方)。

1

它也可能是有用的,當你構建你的代碼。例如,如果我們先聲明的前

<?php 
$myArray = array(); 

//... 

變量並在底部我們加載一個模板文件$template->render('template.html', $myArray);

比方說,我們有一個if語句,如果某些條件爲真,我們分配新值給數組。但是如果條件不成立,我們不會傳遞任何信息(數組中的新值),因此數組不會被啓動 - 它會產生一個錯誤,除非該數組未被聲明。但既然是這樣,我們只需加載一個空數組並且不會有錯誤。

+0

感謝,好點!儘管如果在這個數組上使用任何函數,比如'end($ array)'或者其他任何函數,即使數組被聲明但是是空的,它也會導致錯誤...所以你必須在任何情況下檢查它,沒有? – Helmut

0

不,您不需要。

一般來說,我初始化數組與空數組的唯一時間是在類似案例:

$list = array(); 
for($database_result as $row) 
{ 
    $list[] = $row['value']; 
} 

echo implode(', ', $list); 

如果它正好是在數據庫中的結果沒有任何行,則implode通話將失敗,因爲$ list不存在。


你給的只是設定值的列表,你已經知道了,這個例子,我一般這樣做:

$array = array 
(
    "value 1", 
    "value 2", 
); 
相關問題