2010-11-16 5 views

Respuesta

20

No es una instancia de un array en PHP usando:

$foo=new array(); // error in PHP 

Eso es para Javascript:

foo=new Array(); // no error in Javascript 

En PHP, new se utiliza sólo para crear instancias de objetos.

+1

tiene sentido, gracias! – mattypie

+3

+1. Solo quiero señalar que * "En PHP, lo nuevo se usa solo para crear instancias de objetos." * ... En Javascript también, es solo que 'Array' es un objeto en Javascript, mientras que en PHP, es un mapa ordenado (algo Javascript no tiene por decir, porque un mapa ordenado en JS es un objeto). – netcoder

+0

Tienes toda la razón. Las matrices asociativas en Javascript son objetos. – stillstanding

9

La diferencia es que usar new no funciona, ya que array() es una construcción de lenguaje y no un constructor de objetos. Se genera un error:

Parse error: syntax error, unexpected T_ARRAY in php shell code on line 1 

Por otro lado, declarándolo como

$f=array(); 

antes de empezar la asignación de artículos es una buena práctica. El modo de informe de error estricto puede dar una advertencia sobre el uso de una variable no declarada de lo contrario.

+0

gracias por su ayuda. Todo tiene sentido ahora. – mattypie

0

foo = new Array(); es la sintaxis de JavaScript.

Es una buena práctica preinicializar sus matrices cuando corresponda para que no llene accidentalmente datos a una matriz existente con el mismo nombre definido en otra parte del código.

5

Puede instanciar una matriz en PHP utilizando la palabra clave new, sin embargo, es un poco más voluminosa que las matrices creadas con la función array() y no utiliza la misma llamada.

new ArrayObject(); 

crearemos una matriz como objeto. Más importante aún, esta es una clase extensible, en caso de que desee utilizar una sintaxis de matriz con un objeto en PHP orientado a objetos. En la mayoría de los casos, es aconsejable usar array() para mayor velocidad y simplicidad.

Edición: supongo que nunca respondí la pregunta.

$var = array(); 
$var[] = 'car'; 

creará una nueva matriz vacía y luego agregará 'auto' a la matriz. Es una buena forma de inicializar cualquiera y todas las matrices. Sería mejor escribir estas dos líneas como uno: $var = array('car');

$var[] = 'car'; 

hará una nueva matriz con 'coche' en ella, si $var no es una matriz o está vacía.Si $var pasa a haber sido declarado como matriz, es posible que haya guardado accidentalmente algunos valores anteriores (por lo que es una buena forma de inicializar sus matrices).

$var = new ArrayObject(); 
$var[] = 'car'; 

es la forma de OOP para declarar una matriz. Es un poco más recursos, lo que se adhieren con array() menos que tenga una buena razón para usar ArrayObject

Nota:

incrementar una variable numérica sin inicializar es significativamente más lento que incrementar una variable numérica inicializado ($i++ es más lento que $i = 0; $i++). Este no es el caso de las matrices en php: ($var[] = 'car' es aproximadamente el mismo que $var = array(); $var[] = 'car')

+1

También hay 'SplFixedArray' – Gordon

Cuestiones relacionadas