Tableau 2 dimensions

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 : Tableau 2 dimensions

Re: Tableau 2 dimensions

par Mazarini » 31 janv. 2013, 10:32

Bonjour,

Je pense que tu devrais utiliser des objets.

un objet modele avec comme propriété id, nom
Un objet marque avec comme propriété id, nom et un tableau de modèle

Je pense que ca simplifierai ta gestion des données.

Si tu veux travailler uniquement avec des tableaux, utilise plutot :

$tab[$i]['id']=$marque['id'];
$tab[$i]['marque']=$marque['marque'];
$tab[$i]['modeles']=array(); // Pas de modèle renseigné au début
et ensuite
$tab[$i]['modeles'][$j]['id']=$modele['id'];
$tab[$i]['modeles'][$j]['mod']=$modele['mod'];

Re: Tableau 2 dimensions

par xTG » 31 janv. 2013, 09:36

Mea culpa ta boucle était bien incorrecte...
Le souci qu'on observe est que dans $marque tu as bien les index numériques mais aussi les index alphanumériques !
Et ensuite on a une drôle d'interprétation de l'index name alors qu'il n'existe pas toujours, name doit être converti en entier pour accéder à la variable de type String et est tout simplement converti en 0.
foreach($tab as $marque){
        echo 'marque : ' .$marque['marque'].  "<br />";
foreach($marque as $key => $modele){
  if( is_numeric($key) )
        echo 'modele : ' .$modele['name'].  "<br />";
}

}

Re: Tableau 2 dimensions

par xpdesignstudio2 » 30 janv. 2013, 23:11

en effet

bizarrement, voila ce qu'il ressort alors que je n'ai que deux marques et un modèle


le balayage :
foreach($tab as $marque){
        echo 'marque : ' .$marque['marque'].  "<br />";
foreach($marque as $modele){
        echo 'modele : ' .$modele['name'].  "<br />"; 
}

}
donne :

marque : peugeot
modele : 1
modele : p
modele : 406
marque : renault
modele : 2
modele : r

encore une fois le var_dump affiche pourtant ceci :

Code : Tout sélectionner

0 => array 'id' => string '1' (length=1) 'marque' => string 'peugeot' (length=7) 0 => array 'id' => string '2' (length=1) 'name' => string '406' (length=3) 1 => array 'id' => string '2' (length=1) 'marque' => string 'renault' (length=7)

Re: Tableau 2 dimensions

par xTG » 30 janv. 2013, 21:03

Ton code de balayage ne reflète pas l'affichage que tu nous donnes.
Pas de echo 'marque', pas de echo 'modèle'.
On ne peut donc te dire ce qui ne va pas, car ton code de balayage tel que tu nous le présente est tout à fait correct.

Tableau 2 dimensions

par xpdesignstudio » 30 janv. 2013, 19:06

Bonjour à tous

Je cherche à balayer un tableau à deux dim mais je peine un peu..

J'ai des marques composées de modèles

Dans l'exemple ci-après

J'ai juste 2 marques et un modèle.

Voila mon code
$marques_sql=Doctrine_Core::getTable('Marque')->getmarques();

$tab=array();
$i=0;
foreach($marques_sql as $marque){
$tab[$i]['id']=$marque['id'];
$tab[$i]['marque']=$marque['marque'];

$modeles_sql=Doctrine_Core::getTable('Modele')->getbymarque($marque['id']);
$j=0;

foreach($modeles_sql as $mod){
	$tab[$i][$j]['id']=$mod['id'];
	$tab[$i][$j]['mod']=$mod['modele'];
	$j++;
}

$i++;
}

après un var_dump j'obtiens ca :

Code : Tout sélectionner

array 0 => array 'id' => string '1' (length=1) 'marque' => string 'peugeot' (length=7) 0 => array 'id' => string '2' (length=1) 'mod' => string '406' (length=3) 1 => array 'id' => string '2' (length=1) 'marque' => string 'renault' (length=7)
et bizarrement quand je balaye mes datas:
foreach($tab as $marque){
	echo $marque['marque'];
foreach($marque as $modele){
	echo $modele['mod'];	
}

}
j'obtiens ceci :

marque :peugeot
modele :1p406

renault
2r

Merci pour votre aide