2012-05-30 35 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", 
); 
相关问题