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


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


Для тех, кто также совершил эту ошибку, используйте =>вместо :ключей и значений!
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);

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


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

3

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.