Подтвердить что ты не робот

PHP: Какая разница между инициализацией массива с "новым" без него?

Я всегда создавал массивы, просто заполняя их

$foo[] = 'car';

но я видел много

$foo = array();
$foo[] = 'car';

и

$foo = new array();

Какая разница между не инициализацией, использованием array() и использованием нового массива();?

спасибо!

4b9b3361

Ответ 1

Вы не создаете экземпляр массива в PHP, используя:

$foo=new array(); // error in PHP

Что для Javascript:

foo=new Array(); // no error in Javascript

В PHP new используется только для создания экземпляров объектов.

Ответ 2

Разница заключается в том, что использование new не работает, поскольку array() - это языковая конструкция, а не конструктор объекта. Это вызывает ошибку:

Parse error: syntax error, unexpected T_ARRAY in php shell code on line 1

С другой стороны, объявив его как

$f=array();

прежде чем вы начнете назначать предметы, это хорошая практика. Строгий режим сообщений об ошибках может дать предупреждение об использовании необъявленной переменной в противном случае.

Ответ 3

Вы можете создать экземпляр массива в PHP с помощью ключевого слова new, однако он немного более массивный, чем массивы, созданные с помощью функции array(), и не использует один и тот же вызов.

new ArrayObject();

будет создавать массив как объект. Что еще более важно, это расширяемый класс, если вы хотите использовать синтаксис массива с объектом в объектно-ориентированном PHP. В большинстве случаев рекомендуется использовать array() для скорости и простоты.

Изменить: я думаю, я никогда не отвечал на этот вопрос.

$var = array();
$var[] = 'car';

создаст новый пустой массив, а затем добавит "автомобиль" в массив. Это хорошая форма для инициализации всех и всех массивов. Было бы лучше записать эти две строки как одну: $var = array('car');

$var[] = 'car';

создаст новый массив с "автомобилем", если $var не является массивом или пуст. Если $var уже объявлен как массив, вы можете обнаружить, что вы случайно сохранили некоторые старые значения (поэтому хорошая форма для инициализации ваших массивов).

$var = new ArrayObject();
$var[] = 'car';

- это способ ООП для объявления массива. Это немного более ресурсоемкий, поэтому придерживайтесь array(), если у вас нет веских причин использовать ArrayObject

Примечание:

Приращение неинициализированной числовой переменной значительно медленнее, чем приращение инициализированной числовой переменной ($i++ медленнее, чем $i = 0; $i++). Это не относится к массивам в php: ($var[] = 'car' примерно совпадает с $var = array(); $var[] = 'car')

Ответ 4

foo = new Array(); - это синтаксис javascript.

Хорошей практикой является предварительная инициализация ваших массивов, когда это применимо, поэтому вы случайно не заполняете данные в существующий массив с тем же именем, определенным в другом месте кода.