remplir un array avec un foreach

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : remplir un array avec un foreach

Re: remplir un array avec un foreach

par moogli » 12 août 2011, 15:14

de rien, le conseil de Mazarini est intéressant pour ne pas de compliquer dans le futur ;)


@+

Re: remplir un array avec un foreach

par ladyyvi » 12 août 2011, 15:04

Merci beaucoup moogli =)

Re: remplir un array avec un foreach

par Mazarini » 12 août 2011, 14:42

Bonjour,

Il me semble qu'il manque une colonne dans ta table pour ordonner les éléments de menu. Ajouter une colonne "poids" et lire la table avec un "order by poids" te permettrai d'être sur de l'ordre.

Re: remplir un array avec un foreach

par moogli » 12 août 2011, 14:07

salut,

a vu de nez je ferais ça (pas tester)
<?php
$menu_sous_menu = array();
$tmp = array();
foreach($sous_menu as $k=>$v){
    if($v['id_categorie_parent'] =='0'){
        $menu_sous_menu[$v['label_categorie']] = array();
		$tmp [ $v['id_categorie'] ] = $v['label_categorie'];
    }else{
        $menu_sous_menu[ $tmp[ $v['id_categorie_parent']] ][] = $v['label_categorie'];
    }
}
?>
explication
le tableau tmp va contenir les labels des catégorie parentes indexé par leur id_catégorie de la table.
comme ça quand tu est "un enfant" tu a le nom de la catégorie parente dans le tableau en utilisant l'index du parent
par exemple $tmp[2] == Classiques , $tmp[3] == Tournants etc

une autre solution serait de te tourner vers SQL pour ajouter, dans ta selection la selection de l'ancetre et de mettre null s'il n'y a pas d'ancetre.
comme ça tu aurais directement dans le tableau $v et pourrait ainsi trier sur le fait que l'ancetre soit null ou nom et si c'est pas null tu utilise directement la valeur dans le tableau sous menu ;)

@+

remplir un array avec un foreach

par ladyyvi » 12 août 2011, 12:34

Bonjour.

Je me rends compte que j'ai d'énorme lacune en php.
je n'arrive pas à résoudre se problème

J'ai une table avec mes catégories et sous catégories qui ressemble à ca :

Image

J'aimerais faire un menu avec ces catégories et chaque sous-catégories

J'ai essayer comme ca :

Code : Tout sélectionner

$menu_sous_menu = array(); foreach($sous_menu as $k=>$v){ if($v['id_categorie_parent'] =='0'){ $menu_sous_menu[$v['id_categorie']][] = $v['label_categorie']; }else{ $menu_sous_menu[$v['id_categorie_parent']][] = $v['label_categorie']; } } var_dump($menu_sous_menu);
et j'obtient ca:

array(4) {
[1]=>
array(5) {
[0]=>
string(15) "Traditionnelles"
[1]=>
string(9) "Bourgogne"
[2]=>
string(6) "Savoie"
[3]=>
string(4) "Jura"
[4]=>
string(11) "Accessoires"
}
[2]=>
array(3) {
[0]=>
string(10) "Classiques"
[1]=>
string(8) "Bretagne"
[2]=>
string(11) "Accessoires"
}
[3]=>
array(2) {
[0]=>
string(9) "Tournants"
[1]=>
string(7) "Spirale"
}
[4]=>
array(3) {
[0]=>
string(6) "Design"
[1]=>
string(17) "Métallique Design"
[2]=>
string(12) "Chêne Design"
}
}

mais j'aimerais obtenir ca :

array(4) {
['Traditionnelles']=>
array(4) {
[0]=>
string(9) "Bourgogne"
[1]=>
string(6) "Savoie"
[2]=>
string(4) "Jura"
[3]=>
string(11) "Accessoires"
}
['Classiques']=>
array(2) {
[0]=>
string(8) "Bretagne"
[1]=>
string(11) "Accessoires"
}
['Tournants']=>
array(1) {
[0]=>
string(7) "Spirale"
}
['Design']=>
array(2) {
[0]=>
string(17) "Métallique Design"
[1]=>
string(12) "Chêne Design"
}
}

Si quelqu'un à une solution :D

Merci beaucoup