En ciertos otros idiomas (AS3, por ejemplo), se ha observado que la inicialización de una nueva matriz es más rápida si se hace de esta manera, en var foo = []
lugar de var foo = new Array()
por razones de creación de objetos y creación de instancias. Me pregunto si hay equivalencias en PHP.
class Foo {
private $arr = array(); // is there another / better way?
}
php
arrays
initialization
Tom Auger
fuente
fuente
array_fill
? php.net/manual/en/function.array-fill.php$arr = array()
o$arr = []
Respuestas:
En las implementaciones de ECMAScript (por ejemplo, ActionScript o JavaScript),
Array()
es una función constructora y[]
forma parte de la gramática literal de la matriz. Ambos están optimizados y ejecutados de maneras completamente diferentes, con la gramática literal que no se ve afectada por la sobrecarga de llamar a una función.PHP, por otro lado, tiene construcciones de lenguaje que pueden parecer funciones pero que no se tratan como tales. Incluso con PHP 5.4, que admite
[]
como alternativa, no hay diferencia en la sobrecarga porque, en lo que respecta al compilador / analizador, son completamente sinónimos.Si necesita admitir versiones anteriores de PHP, use la sintaxis anterior. También hay un argumento a favor de la legibilidad, pero, siendo un desarrollador JS desde hace mucho tiempo, este último me parece bastante natural. De hecho, cometí el error de intentar inicializar matrices usando
[]
cuando estaba aprendiendo PHP por primera vez.Este cambio al lenguaje fue originalmente propuesto y rechazado debido a un voto mayoritario en contra de los desarrolladores principales con la siguiente razón:
Sin embargo, parece que hubo un cambio de corazón que condujo a 5.4, tal vez influenciado por las implementaciones de soporte para bases de datos populares como MongoDB (que usan la sintaxis ECMAScript).
fuente
$array = [];
ya que hace que ir y venir entre JS y PHP sea más fácil.$array = [];
mejor opción? o debería probar con otro. cuál es mejor[]
es un poco más fácil de escribir.Crea una matriz vacía.
Puede insertar valores en la matriz más tarde, así:
En este punto, $ myArray contiene "árbol", "casa" y "perro". Cada uno de los comandos anteriores se agrega a la matriz, conservando los elementos que ya estaban allí.
Habiendo venido de otros idiomas, esta forma de agregar a una matriz me pareció extraña. Esperaba tener que hacer algo como $ myArray + = "dog" o algo así ... o tal vez un método "add ()" como las colecciones de Visual Basic. Pero esta sintaxis de adición directa ciertamente es corta y conveniente.
En realidad, debe usar la función unset () para eliminar elementos:
... eliminaría "house" de la matriz (las matrices están basadas en cero).
... destruiría toda la matriz.
Para ser claros, la sintaxis de corchetes vacíos para agregar a una matriz es simplemente una forma de decirle a PHP que asigne los índices a cada valor automáticamente, en lugar de que USTED asigne los índices. Debajo de las cubiertas, PHP realmente está haciendo esto:
Puede asignar índices usted mismo si lo desea, y puede usar los números que desee. También puede asignar números de índice a algunos elementos y no a otros. Si hace eso, PHP completará los números de índice que faltan, incrementándose a partir del número de índice más grande asignado a medida que avanza.
Entonces, si haces esto:
... el elemento "perro" recibirá un número de índice de 21. PHP no realiza una coincidencia inteligente de patrones para la asignación de índice incremental, por lo que no sabrá que es posible que desee asignar un índice de 30 a "perro" ". Puede usar otras funciones para especificar el patrón de incremento para una matriz. No voy a entrar en eso aquí, pero todo está en los documentos PHP.
Salud,
- = Cameron
fuente
$array[] = 'foo'
funciona bien en versiones anteriores de PHP. Es solo$array = [];
para inicializar una matriz que es nueva en 5.4.Antes de PHP 5.4:
PHP 5.4 y superior
fuente
En PHP, una matriz es una matriz; no hay una consideración primitiva frente a un objeto, por lo que no hay una optimización comparable.
fuente
Lo que estás haciendo es 100% correcto.
En términos de nombres agradables, a menudo se hace que las propiedades privadas / protegidas estén precedidas por un guión bajo para que sea obvio que no son públicas. Por ejemplo
private $_arr = array()
opublic $arr = array()
fuente
$this
para obtener el valor y nunca se deben usar propiedades públicas.$this->arr
y$this->_arr
. ¿Por qué nunca deberías usar propiedades públicas?Prueba esto:
fuente
No hay otra manera , así que este es el mejor.Editar: Esta respuesta no es válida desde PHP 5.4 y superior.
fuente
Inicializando una matriz simple:
Inicializando la matriz dentro de la matriz:
Fuente: Sorce para el código
fuente