2012-05-30 4 views
1

Если вы просто хотите, чтобы присвоить значение переменной следующим образом:

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

вы сначала должны объявить $array=array()? Очевидно, что вы НЕ ДОЛЖНЫ, поскольку это работает без него, но почему бы вам тогда это сделать? Или в чем польза от этого?

ответ

1

Что вы описываете, это не декларация, а инициализация. Вы не объявляете массив $ array, вы назначаете ему значение (пустой массив).

Такая инициализация может быть использована для установления области видимости, и, возможно, она может сделать код более читаемым (хотя я не могу понять, как это сделать), но обычно это делается только тогда, когда вы специально хотите иметь пустой массив. Классическим примером является использование синтаксиса [] для добавления в массив. Учитывайте следующее:

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

Без второй линии это приведет к ошибке.

Кстати, команда array() не является обычной функцией. Это языковая конструкция, и начиная с PHP 5.4 вы можете заменить ее коротким [] синтаксисом:

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

В основном для документальных целей. Он напоминает разработчику, что переменная предназначена для использования в качестве массива.

В качестве примера, в CodeIgniter вы можете передавать значения в представление, но они должны быть массивом или вызывать исключение. Объявление переменной как array() напоминает, что даже если вы намерены передать одно значение, вы должны вставить его как элемент в массив.

2

В основном читаемость думаю. Кто-то может (или сам через 5 месяцев) прийти и задаться вопросом, откуда исходит $ array [], поскольку он «волшебным образом появляется в коде». С $ myArray = array() вы, по крайней мере, знаете (эй, вот где мы сначала видим переменную).

1

Он также может быть полезен при структурировании кода. Например если мы сначала объявить переменную в верхней

<?php 
$myArray = array(); 

//... 

А внизу мы загружаем файл шаблона $template->render('template.html', $myArray);

Допустим, у нас есть, если заявление и если определенное условие истинно мы назначаем новый значение для массива. Но если условие было неверным, мы не передавали бы какую-либо информацию (новое значение для массива), поэтому массив не был бы инициирован - он породил бы ошибку, если массив не был объявлен. Но так как это так, мы просто просто загрузим пустой массив и ошибок не будет.

+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", 
);