Скорочене для масивів: чи існує такий синтаксис, як {} або []?


84

Що таке скорочення для позначення масиву в PHP?

Я намагався використати (не працює):

$list = {};

Це буде ідеально, якщо ви дасте посилання на деяку інформацію про інші скорочення для PHP.


Є багато функцій, які можна використовувати для створення масивів в особливих випадках (наприклад, str_split), але я припускаю, що це не те, про що ви говорите.
Matthew

PHP ні. Але phpreboot та pihipi забезпечують новий експериментальний синтаксис.
mario

Відповіді:


135

Оновлення:
З 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";

6
PHP такий підлий.
GWW

1
Я роками використовував PHP професійно, мені довелося запитати у колеги, що це $results[] = $row;означає.
Джосу Олександр Ібарра

4
$ результати [] = $ рядок; насправді набагато швидше, ніж array_push ($ результати, $ рядок)
Daniklad

Після всього цього часу, я думав, $var = [];був представлений з PHP7. Не мав ідеї що це було ще 5.4!
IncredibleHat

46

ТАК, воно існує !!

Вилучено з іншого питання переповнення стека:

Скорочений синтаксис для масивів було повторно обговорено, прийнято і зараз на шляху випуску з PHP 5.4

Використання:

$list = [];

Довідково: PHP 5.4 Коротка рука для масивів


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



3

Ви можете оголосити свій масив наступним чином:

$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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.