8795 sujets

Développement web côté serveur, CMS

Bonjours je galère grave sur les tableaux donc je simplifie tout pour me faire mieux expliquer

voici un code qui produit un array multidimensionnel avec tri des valeur avec foreach
$fruits["panier"] = array (
    "fruits"  => array("orange","banane","pomme"),
    "couleurs"   => array("orange","jaune", "vert")
);



print_r ($fruits);
echo '<br/>';echo '<br/>';echo '<br/>';
foreach ($fruits["panier"] as $v1) {
    foreach ($v1 as $v2) {
        echo $v2;
		echo '<br/>';
    }
}

echo '<br/>';

voici le print de mon panier:
Array ( Smiley panier => Array ( Smiley fruits => Array ( [0] => orange [1] => banane [2] => pomme ) Smiley couleurs => Array ( [0] => orange [1] => jaune [2] => vert ) ) )

j'obtient donc:
orange
banane
pomme
orange
jaune
vert

comment obtenir une sortie type ordonnée entre les sous tableau de "panier" genre:
orange
orange
banane
jaune
pomme
vert
Salut, le plus simple serait de changer ton type de données:
$arr ['panier'] = array(
array('fruits'=>'orange','couleur'=>'orange'), 
array('fruits'=>'banane','couleur'=>'jaune'),
array('fruits'=>'pomme','couleur'=>'rouge')
);


Rentrer les infos à la mano, c'est dégueulasse, mais en automatisant le tout, c'est propre.
Et tu utilises ces lignes de code :

$size = sizeof($arr['panier']); //Te retourne 3

for($i = 0; $i < $size ; $i++){
    echo $arr['panier'][$i]['fruits'] . 'est de couleur ' . $arr['panier'][$i]['couleur'] . '<br/>';
}

merci pour ta réponse mais en fait j'ai construit ce tableau afin qu'il ressemble le plus possible a un $_FILES donc format array, sender depuis un formulaire j'ai poster un sujet la dessus un peu plus bas
Modifié par leo2v (29 May 2012 - 13:51)
C'est normal, tu n'as pas changé la structure de ton tableau =D

Sinon, si tu veux vraiment garder ta structure actuelle - chose que je te déconseille -, essaie ça :

$fruits["panier"] = array (
    "fruits"  => array("orange","banane","pomme"),
    "couleurs"   => array("orange","jaune", "vert")
);

//Vérifications sur le format des deux sous-tableaux
$size = sizeof($arr['panier']['fruits']); //Te retourne 3
$sizeVerif = sizeof($arr['panier']['couleurs']); //Te retourne 3

if($size == $sizeVerif){
    //Tout est ok
    for($i = 0; $i < $size ; $i++){
        echo $arr['panier']['fruits'][$i] . 'est de couleur ' . $arr['panier']['couleur'][$i] . '<br/>';
    }
}else{
    //Taille des couleurs != taille fruits : on s'est donc gourré
    echo 'Erreur format tableaux';
}


Modifié par Zed13 (29 May 2012 - 13:56)
Modérateur
Euhh, tu ne peux pas appliquer sa manière de parcourir le tableau à ta propre structure de tableau… (le undefined offset est provoqué lorsque tu cherches à atteindre $fruits['panier'][0] qui n'existe pas.)

Si tu tiens absolument à garder ta structure (mauvaise) et qui n'a rien à voir de près ou de loin avec celle de $_FILES (plus proche, logiquement, de la structure de zed13), c'est tout de même possible:

$fruits["panier"] = array (
    "fruits"  => array("orange","banane","pomme"),
    "couleurs"   => array("orange","jaune", "vert"),
);
foreach ($fruits["panier"]["fruits"] as $key => $fruit) {
  $couleur = $fruits["panier"]["couleurs"][$key];
  print $fruit . ' est de couleur ' . $couleur "<br />\n";
}

Bien sûr la structure de ton tableau est pourrie: risques de bugs, structure illisible et incompréhensible, etc.
Normalement tu crées ton tableau avec une structure solide, et au cas où tu l'adaptes lorsque tu dois faire un échange/fusion/etc.
oui désolé j'ai corrigé par contre quant je teste ton truc ça me donne

$fruits["panier"] = array (
    "fruits"  => array("orange","banane","pomme"),
    "couleurs"   => array("orange","jaune", "vert")
);

//Vérifications sur le format des deux sous-tableaux
$size = sizeof($fruits['panier']['fruits']); 
echo $size;//me retourne 3
$sizeVerif = sizeof($fruits['panier']['couleurs']); 
echo $sizeVerif;//me retourne 3
if($size == $sizeVerif){
    //Tout est ok
    for($i = 0; $i < $size ; $i++){
        echo $fruits['panier']['fruits'][$i] . 'est de couleur ' . $fruits['panier']['couleur'][$i] . '<br/>';
    }
}else{
    //Taille des couleurs != taille fruits : on s'est donc gourré
    echo 'Erreur format tableaux';
}




pour le nom des fruit c'est ok mais pour la couleur =>Notice: Undefined index: couleur in C:\wamp\www\tritable.php on line 28
Modifié par leo2v (29 May 2012 - 14:08)
quel gland je suis j'avais pas vu la petite faute a couleur(s) Smiley confused
merci encore je vais essayé d'aller plus loin dans mon tris de array de mon sujet un peu plus bas