Abkürzung für Arrays: Gibt es eine wörtliche Syntax wie {} oder []?

84

Was ist die Abkürzung für die Array-Notation in PHP?

Ich habe versucht zu verwenden (funktioniert nicht):

$list = {};

Es ist perfekt, wenn Sie Links zu Informationen über andere Abkürzungen für PHP geben.

James
quelle
Es gibt viele Funktionen, mit denen in speziellen Fällen Arrays erstellt werden können (z. B. str_split), aber ich gehe davon aus, dass Sie nicht darüber sprechen.
Matthew
PHP hat nicht. Aber phpreboot und pihipi bieten experimentelle neue Syntax.
Mario

Antworten:

134

Update:
Ab PHP 5.4.0 wurde eine verkürzte Syntax zum Deklarieren von Arrays eingeführt:

$list = [];

Vorherige Antwort:

Das gibt es nicht. Nur $list = array();Aber Sie können einfach anfangen, Elemente hinzuzufügen.

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

Für PHP ist das vollkommen in Ordnung. Sie erhalten nicht einmal eine E_NOTICE für undefinierte Variablen .

Der Fehler auf E_NOTICE-Ebene wird ausgegeben, wenn mit nicht initialisierten Variablen gearbeitet wird, jedoch nicht, wenn Elemente an das nicht initialisierte Array angehängt werden.

Bei den Kurzschriftmethoden sind überall viele verstreut. Wenn Sie sie finden möchten, lesen Sie einfach das Handbuch .

Einige Beispiele, nur zu Ihrer Unterhaltung:

  1. $arr[]Abkürzung für array_push.
  2. Das foreachKonstrukt
  3. echo $string1, $string2, $string3;
  4. Array-Verkettung mit +
  5. Die Existenz von elseif
  6. Variable Einbettung in Strings, $name = 'Jack'; echo "Hello $name";
Alin Purcaru
quelle
6
PHP ist so hinterhältig.
GWW
1
Ich habe PHP jahrelang professionell benutzt, ich musste einen Kollegen fragen, was das $results[] = $row;bedeutet.
Josue Alexander Ibarra
4
$ results [] = $ row; ist tatsächlich viel schneller als array_push ($ results, $ row)
Daniklad
Nach all dieser Zeit dachte ich, $var = [];wurde mit PHP7 eingeführt. Hatte keine Ahnung, dass es schon 5.4 war!
UnglaublichHat
45

JA, es existiert !!

Aus einer anderen Frage zum Stapelüberlauf extrahiert:

Die verkürzte Syntax für Arrays wurde überarbeitet, akzeptiert und ist jetzt auf dem Weg, mit PHP 5.4 veröffentlicht zu werden

Verwendung:

$list = [];

Referenz: PHP 5.4 Short Hand für Arrays

AgelessEssence
quelle
Verwenden Sie für alle, die diesen Fehler ebenfalls gemacht haben, =>anstelle von :zwischen Schlüsseln und Werten!
Clabe45
30

Es ist auch möglich, Inhalte in [] folgendermaßen zu definieren:

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

Dies funktioniert nur in PHP5.4 und höher.

Dieter Gribnitz
quelle
1
Ich denke, es ist besser, 5.4 und höher zu schreiben (in 5.6 funktioniert es). Als Hinweis ist dies die einzige Möglichkeit, ein Array als Klassenkonstante zu deklarieren (z. B. const x = ["a", "b"];), da das const x = Array (....) nicht funktioniert
Pierpaolo Cira
4

Nein, es wurde von der Community vorgeschlagen und abgelehnt, daher ist derzeit nur die Syntax für Arrays array () .

StasM
quelle
3

Die einzige Möglichkeit, ein Array in PHP zu definieren, ist das array()Sprachkonstrukt. PHP hat keine Abkürzung für Array-Literale wie einige andere Sprachen.

Daniel Vandersluis
quelle
2

Ich explodiere einfach Strings in ein Array wie folgt:

$array = explode(",","0,1,2,3,4,5,6,7,8,9,10");
Damien Golding
quelle
2

Sie können Ihr Array wie folgt deklarieren:

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

Sie können so viele eingebettete Arrays haben, wie Sie benötigen.

user3231257
quelle
Dies erzeugt Hinweise zu undefinierten Konstanten.
Popnoodles