Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2010, 14h46   #1
Invité de passage
 
Inscription : février 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 13
Points : 1
Points : 1
Par défaut Recherche dans un tableau à plusieurs dimensions

J'essaie en vain de trouver une fonction, ou tout au moins un moyen de faire une recherche dans un tableau tel que celui ci :

$list_objet = array(
"pomme" => array (
"first_achat" => "22-05",
"last_achat" =>22-12",
"last_quantite" => "5",
"last_prix" => "22"
),
"tomate" => array (
"first_achat" => "15-05",
"last_achat" => "13-12",
"last_quantite" => "8",
"last_prix" => "3"
)
);

il est evident que ceci est un exemple afin que vous puissiez comprendre et que le Nb de sous tableau peut être illimité.
Lorsque je fait un affichage tel que :
echo $list_objet["pomme"][last_achat"] ; j'ai bien 22-12 qui s'affiche

Je voudrais faire une recherche afin de ressortir seulement la valeur la plus élevé de "last_quantite" et d'en afficher aussi le nom du tableau correspondant (pomme ou tomate)
dans mon exemple ce serait : tomate = 8.
ou de faire une recherche de "last_prix" ce qui donnerait :
pomme = 22

merci pour vos aides
Bonne fin d'année a tous
christ84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 15h03   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Si tu cherches juste le plus grand, tu peux faire comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
function leplusgrand($param, $tableau) {
  $max['value'] = 0;
  foreach($tableau as $key=>$value) {
       if ($value[$param] > $max['value']) {
            $max = array('key'=>$key, 'value'=>$value[$param]);
      }
  }
 
return $max['key'];
}
 
echo leplusgrand("last_quantite", $list_objet);
Pour les dates par contre il faudrait les inverser (mm-jj) sinon tu ne peux pas comparer.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 17h04   #3
Invité de passage
 
Inscription : février 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 13
Points : 1
Points : 1
un grand merci pour ta réponse aussi rapide

Je viens de changer ton code à ma sauce afin d'afficher la clef et la valeur
en voici le resultat, cela peu aider qq'un d'autre


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
function leplusgrand($param, $tableau) {
  $max['value'] = 0;
  foreach($tableau as $key=>$value) {
       if ($value[$param] > $max['value']) {
            $max = array('key'=>$key, 'value'=>$value[$param]);
      }
  }
 
return $max;
}
 
 
$recherche= leplusgrand("last_quantite", $list_objet);
echo "<br>".$recherche["key"]." --> ".$recherche["value"];
ce qui donne avec mon tableau d'exemple
tomate --> 8
christ84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h43.


 
 
 
 
Partenaires

Hébergement Web