2011-05-06 2 views
0

Salut Je veux annonce un objet à un tableauComment ajouter objet tableau avec foreach et switch, cas

Comme vous pouvez le voir ci-dessous, je cours à travers un tableau et basé sur le dernier caractère je fais et changer la casse, alors je veux construire un nouveau tableau et ajouter le dernier caractère secon à ce nouveau tableau, ainsi je peux mannager pour additionner ce nouveau tableau et imprimer ou faire écho la somme.

foreach ($answer as $value) { 
    $last=substr($value,-1); 
    $score=substr($value,-2,1); 
    switch($last){ 
    case a: 
     $a=array(); 
     array_push($a,$score); 
     break; 
    case b: 
     $b=array(); 
     array_push($b,$score); 
     break; 
    } 
} 

Dans ma table html je fais ceci:

echo array_sum($a) 

je peux le faire fonctionner si j'ajouter un chiffre comme array_push ($ a, '2'); mais avec l'objet, il suffit d'écraser le premier. qu'est-ce que je fais mal ici?

+0

L'autre problème de syntaxe est que vous devriez écrire 'case 'a':' et 'case 'b':' à la place. – mario

+0

Astuce: changez case a: 'et' case b: 'en' case 'a': 'et' case 'b': 'La premi'ere façon provoque' l'utilisation de la constante undefined a - suppose 'a'' des avertissements. – webbiedave

Répondre

0

Vous créez une nouvelle matrice chaque fois que l'une de ces instructions case correspond, ce qui signifie que vous êtes en train de jeter toutes les fois précédentes l'instruction correspondante, en commençant à partir de zéro chaque fois. Déplacer le $a = array() et $b = array() dehors de la boucle, de sorte que les réseaux sont créés qu'une seule fois:

$a = array(); 
$b = array(); 
foreach (...) { 
    .... 
} 

devrait résoudre le problème

4

Vous compensation de vos tableaux à chaque passage. Définissez-les avant la boucle foreach:

$a = array(); 
$b = array(); 

foreach ($answer as $value) { 
    $last=substr($value,-1); 
    $score=substr($value,-2,1); 
    switch($last){ 
    case a: 
     array_push($a,$score); 
     break; 
    case b: 

     array_push($b,$score); 
     break; 
    } 
} 
+0

Tellement simple ... merci beaucoup. Ca fait trop longtemps depuis que j'ai fait de la programmation sérieuse! ; o) passez un bon week-end – Jakob

Questions connexes