Abreviatura de matrices: ¿hay una sintaxis literal como {} o []?

84

¿Cuál es la abreviatura de la notación de matriz en PHP?

Traté de usar (no funciona):

$list = {};

Será perfecto, si proporciona enlaces sobre alguna información sobre otros métodos abreviados para PHP.

James
fuente
Hay muchas funciones que se pueden usar para crear matrices en casos especiales (por ejemplo, str_split), pero supongo que no es de eso de lo que estás hablando.
Mateo
PHP no lo ha hecho. Pero phpreboot y pihipi proporcionan una nueva sintaxis experimental.
mario

Respuestas:

135

Actualización: a
partir de PHP 5.4.0 se ha introducido una sintaxis abreviada para declarar matrices:

$list = [];

Respuesta anterior:

No lo hay. Solo $list = array();Pero puedes comenzar a agregar elementos.

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

Está perfectamente bien en lo que respecta a PHP. Ni siquiera obtendrá un E_NOTICE para variables indefinidas .

El error de nivel E_NOTICE se emite en caso de trabajar con variables no inicializadas, pero no en el caso de agregar elementos a la matriz no inicializada.

En cuanto a los métodos abreviados, hay muchos esparcidos por todas partes. Si desea encontrarlos, simplemente lea el manual .

Algunos ejemplos, solo para su diversión:

  1. $arr[]taquigrafía para array_push.
  2. El foreachconstructo
  3. echo $string1, $string2, $string3;
  4. Concatenación de matrices con +
  5. La existencia de elseif
  6. Incrustación variable en cadenas, $name = 'Jack'; echo "Hello $name";
Alin Purcaru
fuente
6
PHP es así de astuto.
GWW
1
He usado PHP profesionalmente durante años, tuve que preguntarle a un compañero de trabajo qué $results[] = $row;significaba.
Josue Alexander Ibarra
4
$ resultados [] = $ fila; es en realidad mucho más rápido que array_push ($ resultados, $ fila)
Daniklad
Después de todo este tiempo, pensé que $var = [];se introdujo con PHP7. ¡No tenía idea de que se remontaba a 5.4!
IncredibleHat
46

SI, existe !!

Extraído de otra pregunta de Stack Overflow:

La sintaxis abreviada para matrices se ha vuelto a discutir, se ha aceptado y ahora está en camino de ser lanzada con PHP 5.4

Uso:

$list = [];

Referencia: PHP 5.4 Mano corta para matrices

Esencia eterna
fuente
Para cualquiera que también haya cometido este error, utilice en =>lugar de :entre claves y valores.
clabe45
30

También es posible definir contenido dentro de [] así:

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

Esto solo funcionará en php5.4 y superior.

Dieter Gribnitz
fuente
1
Creo que es mejor escribir 5.4 y superior (en 5.6 funciona). Como nota, es la única forma funcional de declarar una matriz como una constante de clase (por ejemplo, const x = ["a", "b"];) porque la const x = matriz (....) no funciona
Pierpaolo Cira
4

No, fue propuesto y rechazado por la comunidad, por lo que por ahora solo la sintaxis para matrices es array () .

StasM
fuente
3

La única forma de definir una matriz en php es mediante la array()construcción del lenguaje. PHP no tiene una abreviatura para los literales de matriz como lo hacen otros lenguajes.

Daniel Vandersluis
fuente
3

Puede declarar su matriz de la siguiente manera:

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

Puede tener tantas matrices integradas como necesite.

user3231257
fuente
Esto producirá avisos sobre constantes indefinidas.
Popnoodles
2

Simplemente exploto cadenas en una matriz como esta:

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