Page 1 sur 1

foreach sur tableau multidimensionnel

Posté : 09 janv. 2016, 23:23
par sandy2626
bonsoir a tous,
j'aurai besoin d'aide sur la facon de parcourir un tableau avec foreach. voici la consititution de mon tableau :
array[0]['Type']=Type0
array[0]['Id']=Id0
array[0]['Nom']=Nom0
array[0]['Prenom']=Prenom0
array[1]['Type']=Type1
array[1]['Id']=Id1
array[1]['Nom']=Nom1
array[1]['Prenom']=Prenom1
array[2]['Type']=Type2
array[2]['Id']=Id2
array[2]['Nom']=Nom2
array[2]['Prenom']=Prenom2
...
array[$i]['Type']=Typei
array[$i]['Id']=Idi
array[$i]['Nom']=Nomi
array[$i]['Prenom']=Prenomi

avec $i pouvant etre de taille variable.

pouvez vous me dire comment je dois ecrire ma boucle foreach, je n'y arrive pas.
merci beaucoup
sandy

Re: foreach sur tableau multidimensionnel

Posté : 09 janv. 2016, 23:28
par or 1
foreach($tab as $t){
echo $t[''Type];
echo $t[''Id];
echo $t['Nom'];
echo $t['Prenom'];
}

Re: foreach sur tableau multidimensionnel

Posté : 09 janv. 2016, 23:33
par sandy2626
salut or1 merci pour ta reponse aussi rapide.
$tab c est mon tableau c'est bien ca? alors si je comprends bien je peux traiter a l'interieur du foreach chaque donnee recuperee par $t. c'est a dire qu' a chaque iteration j'aurai $t['Type']= type courant, $t['Id] = Id courant etc....?

Re: foreach sur tableau multidimensionnel

Posté : 10 janv. 2016, 13:15
par sandy2626
bonjour,
apparement tout le monde fait la grace mat'. moi j'attends de l'aide je suis bloquee et j'ai essayé un tas de solutions ca ne marche pas. y a t il quelqu
'un qui saura me donner une solution ?
merci

Re: foreach sur tableau multidimensionnel

Posté : 10 janv. 2016, 14:49
par Saian
Salut Sandy, il semble que tu avais bien compris.

Le tableau je le représenterais plutôt comme ça pour plus de clarté :
$people = array(
    array(
        'id' => 1,
        'type' => 'type',
        'nom' => 'nom',
        'prenom' => 'prenom'
    ),
    array(
        'id' => 2,
        'type' => 'type',
        'nom' => 'nom',
        'prenom' => 'prenom'
    ),
   //...
);
Et la boucle :
foreach($people as $person) {
    echo $person['id'];
    //...
}

Re: foreach sur tableau multidimensionnel

Posté : 10 janv. 2016, 18:43
par sandy2626
ok super merci salan. mais pour des raisons de performances j'ai prefere utiliser une boucle for que j'ai ecrit comme cela :
$cnt=count($tab);
for ($i=0;$i<$cnt;$i++){
...traitement de mes donnees $type =$tab[$i]['Type'];
.....etc
}

ca vous parait professionnel? parceque avec le foreach ca mettait plus de 20 sec. avec la boucle for je ne depasse pas les 14secondes. c est encore long mais j'arrive pas a mieux.

Re: foreach sur tableau multidimensionnel

Posté : 10 janv. 2016, 19:28
par Saian
20s ? Ca parait beaucoup, y a combien de lignes dans le tableau et quels sont les traitements ?
La plupart des benchmarks de comparaison for/foreach que j'ai vu placent le foreach en tête.

A part ça le for est tout à fait valable. Si tu veux simplifier l'écriture tu peux faire ça dans le for :
$person = $tab[$i];
Et accéder aux différents index comme ça :
$person['Type'];
$person['Id'];
//...

Re: foreach sur tableau multidimensionnel

Posté : 10 janv. 2016, 19:50
par sandy2626
Oui en effet c'est enorme, sachant que le tableau n'a que 18 lignes. Quelles sont les mesures acceptables d'apres vous ?
Et concernant les benchmark c'est aussi ce que j'avais lu. Je vais peut etre re-ecrire mon foreach et refaire des tests. Sinon je garderai la boucle for.

Re: foreach sur tableau multidimensionnel

Posté : 10 janv. 2016, 19:55
par Saian
Les mesures acceptables ? tout dépend des traitements opérés dans la boucle. Boucler sur 18 lignes ça ne prend à la base même pas un dixième de seconde.

Re: foreach sur tableau multidimensionnel

Posté : 10 janv. 2016, 20:44
par sandy2626
bon je vais voir. je vous tiens au courant. ne fermons pas encore la discussion. je reviens.

Re: foreach sur tableau multidimensionnel

Posté : 12 janv. 2016, 00:32
par sandy2626
alors resultat des courses : ca marche nickel et ca speed. j'ai tout simplement ré écrit ma routine php, ca m'a permis de la séparer en 2 routines puisque j'avais 2 cas dans le ballayage du tableau. donc j'envoie un getJson pour chacun des cas. sinon j'ai laissé la boucle for. quand on a une performance de moins d1 seconde on va pas chercher à être plus royaliste que le roi.
merci à tous ceux qui m'ont aidée et j'espere bientôt pouvoir aider les autres à mon tour ;)
sandy