Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1804 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec un tableau

n°2097998
Orission
Posté le 28-08-2011 à 18:14:47  profilanswer
 

Salut :)
 
Voici mon tableau :
 

Code :
  1. [pvp] => stdClass Object
  2.         (
  3.             [arenaTeams] => Array
  4.                 (
  5.                     [0] => stdClass Object
  6.                         (
  7.                             [name] => Ragna nous tuera
  8.                             [personalRating] => 1656
  9.                             [teamRating] => 1655
  10.                             [size] => 2v2
  11.                         )
  12.                     [1] => stdClass Object
  13.                         (
  14.                             [name] => nul en pve nul en pvp
  15.                             [personalRating] => 1835
  16.                             [teamRating] => 1835
  17.                             [size] => 3v3
  18.                         )
  19.                 )
  20.         )


 
Dans la partie "arenaTeams" il se peut qu'il y est 0, 1, 2 ou 3 type différent de "size", soit aucune, soit 2v2, 3v3 ou 5v5.
 
Mon problème est de savoir combien il y en a donc je fais un :
 
$count = count($profile->pvp->arenaTeams);
 
Je souhaite faire une fonction qui récupère les infos de la "size", donc en gros ça serai :
 
get_arena_personalRating($api, '2v2');
 
 
Mais le problème est que je ne sais pas du tout comment faire, j'ai essayé ça :
 

Code :
  1. function get_arena_personalRating($api, $size)
  2. {
  3.     $profile = $api->pull_JSON();
  4.  
  5.     $count = count($profile->pvp->arenaTeams);
  6.  
  7.     if($count > 0)
  8.     {
  9.         for($i = 0; $i < $count; $i++)
  10.         {
  11.             if(isset($profile->pvp->arenaTeams[$i]->size))
  12.             {
  13.                 $personalRating = $profile->pvp->arenaTeams[$i]->personalRating;
  14.                 $teamRating = $profile->pvp->arenaTeams[$i]->teamRating;
  15.                 $size = $profile->pvp->arenaTeams[$i]->size;
  16.             }
  17.         }
  18.     }
  19.  
  20.     else
  21.     {
  22.         $personalRating = 0;
  23.         $teamRating = 0;
  24.     }
  25. }


 
Mais je ne sais pas récupérer les infos correctement, je bloque total, j'comprends rien :(
 
Un peu d'aide ? merci :)


Message édité par Orission le 29-08-2011 à 17:23:24

---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
mood
Publicité
Posté le 28-08-2011 à 18:14:47  profilanswer
 

n°2098011
SICKofitAL​L
misanthrope
Posté le 28-08-2011 à 21:32:03  profilanswer
 

J'ai pas exactement comptris ce que tu veux faire, mais dans ton code en commentaires je vois "$arena->size = '2v2'" par exemple, mais je pense que c'est plutôt "$arena->size == '2v2'" que tu voulais mettre ?
 
En fait tu veux normaliser ton tableau c'est ca ?


---------------
We deserve everything that's coming...
n°2098238
Tirkyth
Posté le 29-08-2011 à 17:14:55  profilanswer
 

Hello,
 
Alors je veux bien t'aider mais moi aussi je ne comprends pas exactement ton problème.
 
Si ton foreach s'execute 6 fois c'est que "$profile = $api->pull_JSON();" renvoit un tableau de 6 résultats non ?
 
Tu as quoi dans ce tableau ?


---------------
Mon Feedback !
n°2098241
Orission
Posté le 29-08-2011 à 17:23:53  profilanswer
 

J'ai corrigé mon post, c'est un peu plus clair.
 
$profile = $api->pull_JSON();
 
S’exécute qu'une seule fois, c'est juste ma classe qui récupère les infos de l'api battle.net

Message cité 1 fois
Message édité par Orission le 29-08-2011 à 17:25:29

---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
n°2098264
Tirkyth
Posté le 29-08-2011 à 18:43:09  profilanswer
 

Orission a écrit :

$profile = $api->pull_JSON();

 

S’exécute qu'une seule fois, c'est juste ma classe qui récupère les infos de l'api battle.net


Oui ça j'avais bien compris, c'était pas vraiment ça ma question  :o

 

Sinon en effet c'est un peu plus clair.

 

Si je comprends bien ce que tu essayes de faire, tu veux chercher dans $profile ce qui correspond au $size que tu passes en paramètre et renvoyer les informations en question. Dans ce cas ça donnerait je pense quelque chose dans ce genre :

Code :
  1. function get_arena_personalRating($api, $size)
  2. {
  3.    $profile = $api->pull_JSON();
  4.  
  5.    foreach ($profile->pvp->arenaTeams as $team)
  6.    {
  7.        if ($team->size === $size)
  8.        {
  9.            return $team;
  10.        }
  11.    }
  12.  
  13.    return null;
  14. }
 

Et ensuite, là où tu récupères la valeur renvoyée par cet appel de fonction, tu vérifie le résultat :
- Si c'est null quand tu envoies '2v2', c'est que le joueur en question n'a pas d'équipe 2v2.
- Si c'est une instance de stdClass, c'est qu'il a une équipe 2v2 et tu peux accéder à sa côte personnelle et d'équipe via les propriété publiques "personalRating" et "teamRating".

 

Si je suis à côté de la plaque, ce qui est possible, c'est que soit je n'ai pas compris ce que tu veux faire, soit tu ne comprends pas comment tu dois continuer après cette fonction là.  :)

 

Tiens moi au courant !

 

Edit : Après lecture du nom de ta fonction, ça serait plus ça peut-être :

Code :
  1. function get_arena_personalRating($api, $size)
  2. {
  3.    $profile = $api->pull_JSON();
  4.  
  5.    foreach ($profile->pvp->arenaTeams as $team)
  6.    {
  7.        if ($team->size === $size)
  8.        {
  9.            return $team->personalRating;
  10.        }
  11.    }
  12.  
  13.    return null;
  14. }


Message édité par Tirkyth le 29-08-2011 à 18:45:38

---------------
Mon Feedback !
n°2098268
Orission
Posté le 29-08-2011 à 19:15:12  profilanswer
 

Code :
  1. function get_arena_personalRating($api, $size)
  2. {
  3.     $profile = $api->pull_JSON();
  4.  
  5.     foreach($profile->pvp->arenaTeams as $team)
  6.     {
  7.     p($team);
  8.         if($team->size === $size)
  9.             return $team->personalRating;
  10.  
  11.         else
  12.             return 0;
  13.     }
  14.  
  15.     return null;
  16. }


 
 
Donc j'affiche cela :
 

Code :
  1. echo '2v2 - '.get_arena_personalRating($api, '2v2').'<br />';
  2. echo '3v3 - '.get_arena_personalRating($api, '3v3').'<br />';
  3. echo '5v5 - '.get_arena_personalRating($api, '5v5');


 
 
Et ça me donne :
 

Code :
  1. stdClass Object
  2. (
  3.    [name] => Ragna nous tuera
  4.    [personalRating] => 1656
  5.    [teamRating] => 1655
  6.    [size] => 2v2
  7. )
  8.  
  9. 2v2 - 1656
  10.  
  11. stdClass Object
  12. (
  13.    [name] => Ragna nous tuera
  14.    [personalRating] => 1656
  15.    [teamRating] => 1655
  16.    [size] => 2v2
  17. )
  18.  
  19. 3v3 - 0
  20.  
  21. stdClass Object
  22. (
  23.    [name] => Ragna nous tuera
  24.    [personalRating] => 1656
  25.    [teamRating] => 1655
  26.    [size] => 2v2
  27. )
  28.  
  29. 5v5 - 0


 
Je ne comprends pas. En fait c'est ça qui me bloque depuis le début, j'ai beau faire des codes différents, et j'ai toujours le même bug :(


Message édité par Orission le 29-08-2011 à 20:17:48

---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »
n°2098407
Tirkyth
Posté le 30-08-2011 à 12:00:37  profilanswer
 

Je viens de faire un test avec ce script là précisément :
 

Code :
  1. <?php
  2.  
  3. class Api
  4. {
  5.    public function pull_JSON()
  6.    {
  7.        $team2v2 = new stdClass();
  8.        $team2v2->name = 'Ragna nous tuera';
  9.        $team2v2->personalRating = 1656;
  10.        $team2v2->teamRating = 1656;
  11.        $team2v2->size = '2v2';
  12.  
  13.        $team3v3 = new stdClass();
  14.        $team3v3->name = 'nul en pve nul en pvp';
  15.        $team3v3->personalRating = 1835;
  16.        $team3v3->teamRating = 1835;
  17.        $team3v3->size = '3v3';
  18.  
  19.        $profile = new stdClass();
  20.        $profile->pvp = new stdClass();
  21.        $profile->pvp->arenaTeams = array(
  22.            $team2v2,
  23.            $team3v3,
  24.        );
  25.  
  26.        return $profile;
  27.    }
  28. }
  29.  
  30. function get_arena_personalRating($api, $size)
  31. {
  32.    $profile = $api->pull_JSON();
  33.  
  34.    foreach ($profile->pvp->arenaTeams as $team)
  35.    {
  36.        if ($team->size === $size)
  37.        {
  38.            return $team->personalRating;
  39.        }
  40.    }
  41.  
  42.    return 0;
  43. }
  44.  
  45. $api = new Api();
  46.  
  47. echo '2v2 - '.get_arena_personalRating($api, '2v2').'<br />';
  48. echo '3v3 - '.get_arena_personalRating($api, '3v3').'<br />';
  49. echo '5v5 - '.get_arena_personalRating($api, '5v5');


 
J'obtiens comme résultat :

Code :
  1. 2v2 - 1656
  2. 3v3 - 1835
  3. 5v5 - 0


 
Sachant que la classe Api ne sert qu'à mocker ton $api afin qu'elle me renvoit le même tableau que tu indiques dans ton premier post. La fonction renvoit bien les bons résultats. Donc le code que je t'ai donné est parfaitement valide selon moi.  :o  
Je vois mal comment je vais pouvoir t'aider plus que ça :spamafote:


---------------
Mon Feedback !
n°2098460
Orission
Posté le 30-08-2011 à 15:19:24  profilanswer
 

La classe API je l'ai :
 
http://www.rezman.org/source/?b
 
La function pull_JSON aussi.
 
Les name, rating et le reste changent tout le temps, car je parse une base de donnée d'environ 500.000 joueurs :/
 
Moi ce que je ne comprends pas, c'est que le code précédent est parfaitement logique, clair mais ne me renvoie pas les résultats voulut :(


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, 1810, Taverne « Chez Bonaparte »

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec un tableau

 

Sujets relatifs
problème sur tableau C++Probléme de tableau dans requete sql
Probleme StringTokenizer et tableauProbleme : Tableau perd ses valeurs une fois sortie de la boucle
probleme avec tableauproblème avec un tableau de structure !!!
[PERL] Probleme de splice avec un tableau a 2 dimensionsProblème pour récupérer un tableau
problème réalisation tableau périodique tkinter 
Plus de sujets relatifs à : Problème avec un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR