2008-12-08 10 views
7

Je veux créer un tableau avec un message.php: pousser vers un tableau qui peut exister ou non

$myArray = array('my message'); 

Mais en utilisant ce code, myArray obtiendra si elle écrasé existait déjà. Si j'utilise , il doit déjà exister.

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

Sinon, il sera bink.

Existe-t-il un moyen de faire fonctionner le deuxième exemple ci-dessus, sans d'abord effacer $myArray = array();?

Répondre

5

Vérifiez si le tableau existe d'abord, et si elle ne pas, créez ... puis ajouter l'élément, sachant que le tableau va sûrement être défini avant la main:

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

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

snap ... sauf le nouveau bit, dont je ne pense pas qu'il fonctionne en php – benlumley

+0

heh oui ... c'est ce qui se passe quand vous en avez un de trop langues errant dans votre tête :-) –

27

ici:

$myArray[] = 'my message'; 

$ monTableau doivent être un tableau ou non défini. Si elle contient une valeur qui est une chaîne, un entier ou un objet qui n'implémente pas arrayaccess, elle échouera.

+1

C'est bizarre, mais c'est vrai. PHP ne déclenchera aucune erreur/avertissement/notification à ce sujet. – troelskn

+1

C'est une caractéristique. :) – OIS

+0

... une fonctionnalité incroyablement utile (pour moi au moins) – da5id

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

Vous devriez tester si une var contient un tableau avec isset et is_array. – OIS

+0

Pourquoi * et *? is_array() devrait suffire. Il peut difficilement être un tableau s'il n'est pas défini. – Tomalak

+0

Oui, ma mauvaise formulation. Je voulais dire soit. Aurait dû utiliser ou. – OIS

0

OIS 'va fonctionner.

Ou

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

Vous devez utiliser is_array(), non isset. Utile si myArray est défini à partir d'une fonction qui retourne un tableau ou une chaîne (-1 en cas d'erreur par exemple)

Cela empêchera les erreurs si myArray est déclaré comme n'étant pas un tableau ailleurs.

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

Vous mentionnez correctement is_array, mais utilisez une fonction inexistante array_exists. – OIS

+0

Doh! TCL entrait dans le chemin: P –

Questions connexes