Tom's Guide > Forum > Programmation > Besoin d'aide pour un array en PHP

Besoin d'aide pour un array en PHP

Forum Programmation : Besoin d'aide pour un array en PHP

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Salut à tous...
Voila, pour mon jeu j'ai besoin de pouvoir rechercher certaine valeur d'une colonne d'une variable Array (comme lorsqu'on fait avec Mysql : 'SELEC * FROM <table> WHERE id="3"' ce qui revient a ne sélectionner que les ligne de la <table> qui ont pour attribut id 3....je voudrais faire la meme chose mais dans un array)
Merci

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

euh c'est peut être bete comme réponse mais moi je ferai une boucle sur mon tableau et if(tableau[i]==3) then ...
je ne suis pas sur qu'il y ait une autre solution.

Si ce 3 est unique (clé de ta table tu peux te servir d'un tableau associatif et faire tableau["3"])

j'espere que je reponds à ta question!
Marc

Répondre à casimarc

bin ça m'a pas trop convaincu tout ça...je vais chercher une solution....merci quand meme

Répondre à Nisnor

$tableau= array(1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1);
// on va chercher 3
$tofind= 3;
// tableau vide
$tab_return= array();
foreach($tableau as $key=>$val) {
--- if($val==$tofind) {
-----------// on stocker l'indice dans tab_return
---------- $tab_return[]= $key;
----}
}
// $tab_return= array(2, 14);


tu peux jeter un oeil aux fonctions de tableau, à gauche : php.net

Répondre à rongeur-sauvage

Bin merci rongeur-sauvage mais ç an'est pas encore ça...de plus j'ai vu (sur Nexen) une commande sur les array ( array_search(); ) qui fait tout ce que tu vient de me donner et si je ne m'abuse, cela donne les clés (numéros de lignes) auxquels sont stockées les données recherchées....et ce n'est pas tout à fait ce qu'il me faut....ce que je voulais c'est un truc comme pour la recherche dans la base de données....une commande qui retournerai un array contenant toutes les valeur des lignes dont la valeur d'une seule colonne est spécifique...
En fait je compte utiliser ce système afin de récupérer toutes les infos concernant les objets que possèdent les joueurs en sachant que les objet sont stockés dans une table (celle des objet), les objet d'inventaire dans une autre table (celle des héros) et sous forme de string comme ceci: ,1,2,3,4,5 etc etc où chaque chiffre représente en fait l'ID de l'objet correspondant dans la table objet....

Répondre à Nisnor

tu ne trouveras pas un truc tout fait.

Code :
  1. <?php
  2. $tableau= array(
  3. '0'=> array('joueur'=>'jean-guy','habileté'=>'8','endurance'=> '18'),
  4. '1'=> array('joueur'=>'robert','habileté'=>'7','endurance'=> '22'),
  5. '2'=> array('joueur'=>'alain','habileté'=>'7','endurance'=> '14')
  6. );
  7. $col= 'joueur'; $val='robert';
  8. // S3L3CT * FROM tableau where joueur='robert'
  9. $query= selec_in_array($tableau, $col, $val);
  10. print_r($query);
  11. echo '<hr />';
  12. $col= 'habileté'; $val='7';
  13. // S3L3CT * FROM tableau where habilete='7'
  14. $query= selec_in_array($tableau, $col, $val);
  15. print_r($query);
  16. function selec_in_array($tab, $colname, $tofind) {
  17.     // tableau vide
  18.     $tab_return= array();
  19.     foreach($tab as $key=>$val) {
  20.         if($val[$colname]==$tofind) {
  21.             $tab_return[]= $val;
  22.         }
  23.     }
  24.     return($tab_return);
  25. }
  26. ?>


donne un résultat correct, si ce n'est pas ce que tu cherches montre nous ta structure de tableau et un exemple de ce que tu veux recuperer (avec pseudo-correspondance SQL)

Répondre à rongeur-sauvage

C'est pas pour dire, mais l'idée "oui mais une boucle for c'est trop compliqué" ca fait un peu nunuche...

Sinon, j'ai trouvé une fonction qui correspond à ce que tu veux mais Oh My God il faut écrire une fonction callback, ce qui fait plusieurs lignes, c'est fatiguant :D

http://fr.php.net/manual/fr/function.array-filter.php

Répondre à bluedylc

Bin merci beaucoups pour votre aide mais j'ai trouvé solution...apès mure reflexion sur "comment seront organisées mes données d'objet plus tard?", je me suis aperçu que ce code :

$donnees=mysql_fetch_array(mysql_query('SELEC * FROM heros WHERE pseudo="'.$_SESSION['pseudo'].'"'));
//explose le contenu de $sort['sorts'] en un tableau contenant à chaque ligne une valeur. Fait de meme avec le nombre de sort associé
$objet_inv=explode(",",$donnees['inventaire']);
//Compte le nombre d'objet possédés
$nbr_objet=count($objet_inv);
//Fait une boucle de manière a afficher uniquement ce qui est défini par l'un des id de l'inventaire et le type d'objet
for($i=1 ; $i!=$nbr_objet ; $i++)
{
$objet_base=mysql_fetch_array(mysql_query('SELEC * FROM `objet` WHERE id="'.$objet_inv[$i].'" and type="'$_GET['type'].'"'));
if ($objet_base!="" )
{
echo('<option>'.$objet_base['nom'].'</option>');
}
}

suffirait largement :D...(et après des tests avec des objet "bidon", en effet cela fonctionne :D:D
@+;)

Répondre à Nisnor

Citation :

C'est pas pour dire, mais l'idée "oui mais une boucle for c'est trop compliqué" ca fait un peu nunuche...



Heu j'ai pas tout compris là...j'airelu tous les messages de ce topic et a aucun momen je ne vois la mention "for"...
Bon peut etre que ton idée aurait marché mais je ne sais meme pas ce qu'est une fonction callback :s:s

Répondre à Nisnor

Citation :

euh c'est peut être bete comme réponse mais moi je ferai une boucle sur mon tableau et if(tableau[i]==3) then ...
je ne suis pas sur qu'il y ait une autre solution.



Si c'est pas une mention de boucle for ca...

Pour la fonction callback : au cas où t'aurais pas remarqué, dans la doc PHP il y a des exemples d'utilisation, qui en général suffisent à comprendre comment ca marche.

Exemple :

Code :
  1. <?php
  2. function impair($var)
  3. {
  4.   return ($var % 2 == 1);
  5. }
  6. function pair($var)
  7. {
  8.   return ($var % 2 == 0);
  9. }
  10. $array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
  11. $array2 = array (6, 7, 8, 9, 10, 11, 12);
  12. echo "Impairs :\n";
  13. print_r(array_filter($array1, "impair" ));
  14. echo "Pairs :\n";
  15. print_r(array_filter($array2, "pair" ));
  16. ?>


Citation :

L'exemple ci-dessus va afficher :
Impairs :
Array
(
[a] => 1
[c] => 3
[e] => 5
)
Pairs :
Array
(
[0] => 6
[2] => 8
[4] => 10
[6] => 12
)




Si avec ca t'as pas compris comment ca marche...

Répondre à bluedylc

Citation :


bluedylc a écrit :
[quote]euh c'est peut être bete comme réponse mais moi je ferai une boucle sur mon tableau et if(tableau[i]==3) then ...
je ne suis pas sur qu'il y ait une autre solution.



Si c'est pas une mention de boucle for ca...
[/quote]
Bin pas forcément...ça peut etre un while aussi...

Répondre à Nisnor
Tom's Guide > Forum > Programmation > Besoin d'aide pour un array en PHP
Aller à :

Il y a 2187 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens