Сокращение для массивов: существует ли буквальный синтаксис, например {} или []?

85

Каково сокращение для обозначения массива в PHP?

Пытался использовать (не работает):

$list = {};

Будет прекрасно, если вы дадите ссылки на некоторую информацию о других сокращениях для PHP.

Джеймс
источник
Есть много функций, которые можно использовать для создания массивов в особых случаях (например, str_split), но я предполагаю, что вы говорите не об этом.
Мэтью,
У PHP нет. Но phpreboot и pihipi предоставляют экспериментальный новый синтаксис.
Марио

Ответы:

136

Обновление:
с PHP 5.4.0 был введен сокращенный синтаксис объявления массивов:

$list = [];

Предыдущий ответ:

Нет. Только $list = array();но можно только начинать добавлять элементы.

<?php
$list[] = 1;
$list['myKey'] = 2;
$list[42] = 3;

Что касается PHP, это нормально. Вы даже не получите E_NOTICE для неопределенных переменных .

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

Что касается сокращенных методов, то их много разбросано. Если вы хотите их найти, просто прочтите Руководство .

Несколько примеров для вашего развлечения:

  1. $arr[]сокращение для array_push.
  2. foreachконструкция
  3. echo $string1, $string2, $string3;
  4. Объединение массивов с +
  5. Существование elseif
  6. Встраивание переменных в строки, $name = 'Jack'; echo "Hello $name";
Алин Пуркару
источник
1
Я профессионально использую PHP в течение многих лет, мне пришлось спросить коллегу, что это $results[] = $row;значит.
Josue Alexander Ibarra
4
$ results [] = $ row; на самом деле намного быстрее, чем array_push ($ results, $ row)
Даниклад
По прошествии всего этого времени я думал, что $var = [];познакомился с PHP7. Не знал, что это было еще 5,4!
IncredibleHat,
46

ДА, он существует !!

Извлечено из другого вопроса о переполнении стека:

Укороченный синтаксис для массивов был повторно обсужден, принят и теперь готовится к выпуску с PHP 5.4.

Применение:

$list = [];

Справка: PHP 5.4 Short Hand for Arrays

AgelessEssence
источник
Для тех, кто также совершил эту ошибку, используйте =>вместо :ключей и значений!
clabe45
30

Также можно определить содержимое внутри [] следующим образом:

  $array = ['vaue1', 'value2', 'key3'=>['value3', 'value4']];

Это будет работать только в php5.4 и выше.

Дитер Грибниц
источник
1
Думаю, лучше написать 5.4 и выше (в 5.6 работает). В качестве примечания, это единственный рабочий способ объявить массив как константу класса (например, const x = ["a", "b"];), потому что const x = array (....) не работает
Pierpaolo Cira
4

Нет, это было предложено и отклонено сообществом, поэтому на данный момент только синтаксис для массивов - array () .

СтасМ
источник
4

Вы можете объявить свой массив следующим образом:

$myArray1 = array(num1, num2, num3);
$myArray2 = array('string1', 'string2', 'string3');
$myArray3 = array( 'stringkey1'=>'stringvalue1', 'stringkey2'=>'stringvalue2');
$myArray4 = array( 'stringkey1'=>numValue1, 'stringkey2'=>numValue2);
$myArray5 = array( numkey1=>'stringvalue1', numkey2=>'stringvalue2');
$myArray6 = array( numkey1=>numValue1, numkey2=>numValue2);

Вы можете иметь столько встроенных массивов, сколько вам нужно.

user3231257
источник
Это приведет к появлению уведомлений о неопределенных константах.
Popnoodles
3

Единственный способ определить массив в php - это array()языковая конструкция. В PHP нет сокращения для литералов массива, как в некоторых других языках.

Даниэль Вандерслуис
источник
2

Я просто разбиваю строки на массив так:

$array = explode(",","0,1,2,3,4,5,6,7,8,9,10");
Дэмиен Голдинг
источник