Abbreviazione di array: esiste una sintassi letterale come {} o []?


86

Qual è l'abbreviazione per la notazione degli array in PHP?

Ho provato a usare (non funziona):

$list = {};

Sarà perfetto se fornisci link su alcune informazioni su altre scorciatoie per PHP.


Ci sono molte funzioni che possono essere utilizzate per creare array in casi speciali (ad esempio, str_split), ma presumo non sia quello di cui stai parlando.
Matteo

PHP no. Ma phpreboot e pihipi forniscono una nuova sintassi sperimentale.
mario

Risposte:


137

Aggiornamento: a
partire da PHP 5.4.0 è stata introdotta una sintassi abbreviata per la dichiarazione di array:

$list = [];

Risposta precedente:

Non c'è. Solo $list = array();Ma puoi semplicemente iniziare ad aggiungere elementi.

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

È perfettamente OK per quanto riguarda PHP. Non otterrai nemmeno un E_NOTICE per le variabili non definite .

L'errore di livello E_NOTICE viene emesso in caso di utilizzo di variabili non inizializzate, tuttavia non in caso di aggiunta di elementi all'array non inizializzato.

Per quanto riguarda i metodi stenografici, ce ne sono molti sparsi dappertutto. Se vuoi trovarli basta leggere il Manuale .

Alcuni esempi, solo per il tuo divertimento:

  1. $arr[] stenografia per array_push .
  2. Il foreachcostrutto
  3. echo $string1, $string2, $string3;
  4. Concatenazione di array con +
  5. L'esistenza di elseif
  6. Incorporamento variabile nelle stringhe, $name = 'Jack'; echo "Hello $name";

1
Uso PHP professionalmente da anni, ho dovuto chiedere a un collega cosa $results[] = $row;significasse.
Josue Alexander Ibarra

4
$ risultati [] = $ riga; è in realtà molto più veloce di array_push ($ results, $ row)
Daniklad il

Dopo tutto questo tempo, pensavo $var = [];fosse stato introdotto con PHP7. Non avevo idea che fosse già 5,4!
IncredibleHat

46

SÌ, esiste !!

Estratto da un'altra domanda di Stack Overflow:

La sintassi abbreviata per gli array è stata ridiscussa, accettata e ora sta per essere rilasciata con PHP 5.4

Utilizzo:

$list = [];

Riferimento: PHP 5.4 Short Hand for Arrays


Per chiunque abbia commesso anche questo errore, usa =>invece di :tra chiavi e valori!
clabe45

31

È anche possibile definire il contenuto all'interno di [] in questo modo:

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

Funzionerà solo in php5.4 e versioni successive.


1
Penso che sia meglio scrivere 5.4 e superiori (in 5.6 funziona). Come nota, è l'unico modo di lavorare per dichiarare un array come costante di classe (ad esempio const x = ["a", "b"];) perché const x = array (....) non funziona
Pierpaolo Cira


4

No, è stato proposto e rifiutato dalla comunità, quindi per ora solo la sintassi per gli array è array () .


4

Puoi dichiarare il tuo array come segue:

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

Puoi avere tutti gli array incorporati di cui hai bisogno.


Questo produrrà avvisi sulle costanti non definite.
Popnoodles

3

L'unico modo per definire un array in php è tramite il array()costrutto del linguaggio. PHP non ha una scorciatoia per i letterali degli array come fanno alcuni altri linguaggi.


2

Esplodo semplicemente le stringhe in un array in questo modo:

$array = explode(",","0,1,2,3,4,5,6,7,8,9,10");
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.