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.


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";

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


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.


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 () .


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.


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.


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");
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.