2008-12-08 19 views
7

Quiero crear una matriz con un mensaje.php: empujando a una matriz que puede existir o no

$myArray = array('my message'); 

Pero el uso de este código, myArray se sobrescribirá si ya existía.

Si uso array_push, tiene que existir ya.

$myArray = array(); // <-- has to be declared first. 
array_push($myArray, 'my message'); 

De lo contrario, se bink.

¿Hay alguna manera de hacer que el segundo ejemplo anterior funcione sin borrar primero $myArray = array();?

Respuesta

5

Comprobar si la matriz existe en primer lugar, y si no lo hace, lo crea ... a continuación, añadir el elemento, sabiendo que la matriz seguramente será definido de antemano:

if (!isset($myArray)) { 
    $myArray = array(); 
} 

array_push($myArray, 'my message'); 
+0

complemento ... excepto el nuevo bit, que no creo que funcione en php – benlumley

+0

heh yea ... eso es lo que sucede cuando tienes uno demasiado idiomas en su cabeza :-) –

27

aquí:

$myArray[] = 'my message'; 

$ miMatriz tiene que ser una matriz o no establecido. Si contiene un valor que es una cadena, un entero o un objeto que no implementa arrayaccess, fallará.

+1

Es extraño, pero es verdad. PHP no activará ningún error/advertencia/notificación sobre eso. – troelskn

+1

Es una característica. :) – OIS

+0

... una característica increíblemente útil (al menos para mí) – da5id

0
if ($myArray) { 
    array_push($myArray, 'my message'); 
} 
else { 
    $myArray = array('my message'); 
} 
+0

Debería probar si una var contiene una matriz con isset y is_array. – OIS

+0

¿Por qué * y *? is_array() debería ser suficiente. Difícilmente puede ser una matriz si no está configurada. – Tomalak

+0

Sí, mi mala redacción. Quise decir cualquiera. Debería haber usado o. – OIS

0

OIS 'el camino va a funcionar.

O

if (!isset($myArray)) 
    $myArray=array(); 
array_push($myArray, 'message'); 
3

Debe utilizar is_array(), no isset. Útil si myArray se está configurando desde una función que devuelve una matriz o una cadena (-1 en error por ejemplo)

Esto evitará errores si myArray se declara como una matriz no en otro lugar.

if(is_array($myArray)) 
{ 
    array_push($myArray,'my message'); 
} 
else 
{ 
    $myArray = array("my message"); 
} 
+0

Menciona correctamente is_array, pero usa la función no existente array_exists. – OIS

+0

Doh! TCL estaba en el camino: P –

Cuestiones relacionadas