2010-11-24 4 views
69

¿Cuál es la abreviatura de notación de matriz en PHP?Taquigrafía para matrices: ¿hay una sintaxis literal como {} o []?

Traté de usar (no funciona):

$list = {}; 

será perfecto, si se le da enlaces en alguna información acerca de otras abreviaturas de PHP.

+0

Hay muchas funciones que se pueden usar para crear matrices en casos especiales (por ejemplo, str_split), pero supongo que eso no es de lo que estás hablando. – Matthew

+0

PHP no tiene. Pero phpreboot y pihipi proporcionan nueva sintaxis experimental. – mario

Respuesta

108

Actualización:
A partir de PHP 5.4.0 shortened syntax una de las matrices se declaran se ha introducido:

$list = []; 

respuesta anterior:

no lo hay. Solo $list = array(); Pero solo puede 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 for undefined variables.

error de nivel E_NOTICE se emite en caso de trabajar con no inicializados las variables, sin embargo no en el caso de elementos adjuntas a la array sin inicializar.

En cuanto a los métodos abreviados, hay muchos dispersos por todas partes. Si quieres encontrarlos, solo lee The Manual.

algunos ejemplos, sólo para su diversión:

  1. $arr[] taquigrafía para array_push.
  2. El foreach construir
  3. echo $string1, $string2, $string3;
  4. concatenación matriz con +
  5. La existencia de elseif
  6. incrustación de variables en cadenas, $name = 'Jack'; echo "Hello $name";
+6

PHP es así de astuto. – GWW

+0

He usado PHP profesionalmente durante años, tuve que preguntarle a un compañero de trabajo qué '$ results [] = $ row;' quería decir. –

+2

$ resultados [] = $ fila; es en realidad mucho más rápido que array_push ($ resultados, $ fila) – Daniklad

3

La única manera de definir una matriz en PHP es por el constructo array() idioma. PHP no tiene una abreviatura para literales de matriz como lo hacen algunos otros lenguajes.

4

No, se propuso y rechazada por la comunidad, así que por ahora solo la sintaxis para matrices es array().

+8

¡buenas noticias!, revisa mi respuesta publicada. – AgelessEssence

41

¡Sí, existe!

extraída de otra pila pregunta   desbordamiento:

La sintaxis abreviada para las matrices se ha volverá a discutir, aceptado y ahora está en el camino de ser lanzado con PHP 5,4

Uso:

$list = []; 

Referencia: PHP 5.4 Short Hand for Arrays

2

Apenas estallo cadenas en una matriz de este modo:

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

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

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

Esto sólo funcionará en php5.4 y encima.

+1

Creo que es mejor escribir 5.4 y superior (en 5.6 funciona). Como nota, es la única manera de declarar una matriz como una constante de clase (por ejemplo, const x = ["a", "b"];) porque la const x = array (....) no funciona –

2

Se puede declarar la 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); 

Usted puede tener tantos conjuntos integrados como sea necesario.

+0

Esto generará avisos sobre constantes indefinidas. – Popnoodles

+1

@Popnoodles bien sí, es un pseudo código. –

Cuestiones relacionadas