Skrót dla tablic: czy istnieje składnia dosłowna, taka jak {} lub []?

84

Jaki jest skrót notacji tablicowej w PHP?

Próbowałem użyć (nie działa):

$list = {};

Będzie idealnie, jeśli podasz linki do informacji o innych skrótach PHP.

James
źródło
Istnieje wiele funkcji, których można użyć do tworzenia tablic w specjalnych przypadkach (np. Str_split), ale zakładam, że nie o tym mówisz.
Matthew
PHP nie ma. Ale phpreboot i pihipi zapewniają eksperymentalną nową składnię.
mario

Odpowiedzi:

135

Aktualizacja:
Od PHP 5.4.0 została wprowadzona skrócona składnia do deklarowania tablic:

$list = [];

Poprzednia odpowiedź:

Nie ma. Tylko $list = array();Ale możesz po prostu zacząć dodawać elementy.

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

Jeśli chodzi o PHP, jest to całkowicie OK. Nie otrzymasz nawet E_NOTICE dla niezdefiniowanych zmiennych .

Błąd poziomu E_NOTICE jest generowany w przypadku pracy z niezainicjowanymi zmiennymi, jednak nie w przypadku dołączania elementów do niezainicjowanej tablicy.

Jeśli chodzi o metody stenograficzne, istnieje wiele rozproszonych po całym świecie. Jeśli chcesz je znaleźć, po prostu przeczytaj Podręcznik .

Kilka przykładów, tylko dla twojej rozrywki:

  1. $arr[]skrót dla array_push.
  2. foreachkonstrukt
  3. echo $string1, $string2, $string3;
  4. Łączenie tablic z +
  5. Istnienie elseif
  6. Zmienne osadzanie w stringach, $name = 'Jack'; echo "Hello $name";
Alin Purcaru
źródło
6
PHP jest takie podstępne.
GWW
1
Profesjonalnie używam PHP od lat, musiałem zapytać współpracownika, co to $results[] = $row;znaczy.
Josue Alexander Ibarra
4
$ wyników [] = $ wiersz; jest w rzeczywistości dużo szybszy niż array_push ($ wyniki, $ wiersz)
Daniklad,
Po całym tym czasie pomyślałem, że $var = [];został wprowadzony z PHP7. Nie miałem pojęcia, że ​​to już 5,4!
IncredibleHat
46

TAK, istnieje !!

Wyciąg z innego pytania o przepełnienie stosu:

Skrócona składnia tablic została ponownie omówiona, zaakceptowana i jest teraz w drodze do wydania w PHP 5.4

Stosowanie:

$list = [];

Odniesienie: PHP 5.4 Short Hand for Arrays

AgelessEssence
źródło
Dla każdego, kto również popełnił ten błąd, użyj =>zamiast :między kluczami a wartościami!
clabe45,
30

Możliwe jest również zdefiniowanie treści wewnątrz [] w następujący sposób:

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

To zadziała tylko w PHP5.4 i nowszych.

Dieter Gribnitz
źródło
1
Myślę, że lepiej napisać 5.4 i wyżej (w 5.6 to działa). Uwaga: jest to jedyny działający sposób zadeklarowania tablicy jako stałej klasy (np. Const x = ["a", "b"];), ponieważ const x = array (....) nie działa
Pierpaolo Cira
4

Nie, zostało to zaproponowane i odrzucone przez społeczność, więc na razie jedyną składnią dla tablic jest array () .

StasM
źródło
3

Jedynym sposobem zdefiniowania tablicy w php jest array()konstrukcja języka. PHP nie ma skrótu dla literałów tablicowych, jak w niektórych innych językach.

Daniel Vandersluis
źródło
3

Możesz zadeklarować swoją tablicę w następujący sposób:

$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);

Możesz mieć tyle wbudowanych tablic, ile potrzebujesz.

user3231257
źródło
Spowoduje to wyświetlenie powiadomień o niezdefiniowanych stałych.
Popnoodles
2

Po prostu rozbijam ciągi do tablicy takiej jak ta:

$array = explode(",","0,1,2,3,4,5,6,7,8,9,10");
Damien Golding
źródło