PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 08-05-2012 19:18:27

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Arrays plusieurs dimmensions

Bonjour à tous,

Je bloque sur un array (pour les stats d'un jeu vidéo) un peux particulier :


[list] => Array
(
[weapons] => Array
(
// arme 1
[smMP7] => Array
(
[time] => 128
[kills] => 2
[headshots] => 0
[hits] => 36
[shots] => 262
[name] => MP7
)
// arme 2
[pG17] => Array
(
[time] => 520.53
[kills] => 2
[headshots] => 1
[hits] => 18
[shots] => 241
[name] => G17C
)
// arme 3
[srM98] => Array
(
[time] => 1723.73
[kills] => 20
[headshots] => 13
[hits] => 36
[shots] => 70
[name] => M98B
)
)
)
 

Je souhaite afficher [kills] pour chaque arme ([srM98],[pG17],[smMP7]) du tableau [weapons]. Mon problème c'est que je sais l'afficher de cette façon:


foreach($data['list'] as $d)
{
$stats=$d['stats'];
}
echo $stats[weapons][smMP7][kills];
 

mais je ne sais absolument pas comment afficher toute les valeurs avec une boucle car le nom des armes change.

Je veux également classer par [kills] ce tableau mais alors là je suis totalement largué...

Pourriez vous m'aider s'il vous plaît ?

Merci à vous,

Antho

Dernière modification par Anthotill (08-05-2012 19:19:03)

Hors ligne

#2 08-05-2012 20:53:49

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Arrays plusieurs dimmensions

Saluton,
Première question, d'où sort $data['list'], qui, au demeurant, dans le dump, n'a pas d'index 'stats'


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 08-05-2012 23:41:33

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Arrays plusieurs dimmensions

Bonsoir,

C'est une API qui est appelée de cette façon :


// opt = option, ce n'est pas important pour mon problème
$data=array('players'=>array(),'opt'=>array());

// List of players
$data['players'][] = $players;

// List of options
$data['opt']['all']=true;

// Platform can be pc, 360, ps3
$platform='pc';

// Convert lists to JSON
$postdata=array();
$postdata['players']=json_encode($data['players']);
$postdata['opt']=json_encode($data['opt']);

// Run POST Request via CURL
$c=curl_init('http://api.bf3stats.com/'.$platform.'/playerlist/');
curl_setopt($c,CURLOPT_HEADER,false);
curl_setopt($c,CURLOPT_POST,true);
curl_setopt($c,CURLOPT_USERAGENT,'BF3StatsAPI/0.1');
curl_setopt($c,CURLOPT_HTTPHEADER,array('Expect:'));
curl_setopt($c,CURLOPT_RETURNTRANSFER,true);
curl_setopt($c,CURLOPT_POSTFIELDS,$postdata);
$data=curl_exec($c);
$statuscode=curl_getinfo($c,CURLINFO_HTTP_CODE);
curl_close($c);

if($statuscode==200) {
  // Decode JSON Data
  $data=json_decode($data,true);
 
  // Print data for debugging
  //echo '<pre>';
  //print_r($data);
 
  // print list of players with rank and score
  foreach($data['list'] as $d) {
    $stats=$d['stats'];
    echo $d['name']." | ".$stats['rank']['name']." (".$stats['rank']['nr'].") Score: ".$stats['scores']['score']."\n";
  }
  echo '</pre>';
  // ... now you use $data to do whatever
 
} else {
  echo "BF3 Stats API error status: ".$statuscode;
 
}
 

ici, tu as le résultat du print_r($data) : http://p-stats.com/showplayer.js

Hors ligne

#4 09-05-2012 06:00:40

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Arrays plusieurs dimmensions

Ce que je ne comprends pas c'est le rapport entre ton premier print_r($list), qui ne contient pas d'index 'stats', et ta boucle de parcours foreach($data['list'] as $d) qui se réfère à un index 'stats': $stats=$d['stats'];


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 09-05-2012 12:47:15

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Arrays plusieurs dimmensions

Bonjour,

Je suis perdu du coup, il y a tellement de tableau ! pour afficher les informations des tableaux, je fais <?php echo $stats['global']['kills']; ?> par exemple mais je pourrais tout à fait faire de cette façon : <?php echo $d['stats']['global']['kills']; ?>

Le début du tableau réel est un peu différent que l'exemple que j'ai donné :


Array
(
    [status] => ok
    [list] => Array
        (
            [AnthotillFR] => Array
                (
                    [plat] => pc
                    [name] => AnthotillFR
                    [language] => fr
                    [country] => fr
                    [country_name] => France
                    [country_img] => flags/fr.png
                    [date_insert] => 1321180601
                    [date_update] => 1333714397
                    [stats] => Array
                        (
                            [date_insert] => 1328214788
                            [date_update] => 1335907812
                            [date_check] => 1335907812
                            [checkstate] => updated
                            [rank] => Array
                                (
                                    [nr] => 79
                                    [name] => COLONEL SERVICE STAR 34
                                    [score] => 9420000
                                    [img_large] => rankslarge/ss34.png
                                    [img_medium] => ranksmedium/ss34.png
                                    [img_small] => rankssmall/ss34.png
                                    [img_tiny] => rankstiny/ss34.png
                                )
 

J'ai trouvé comment afficher la liste des armes, il faut faire :


<?php
foreach($stats['weapons'] as $m) // weapon list
{
echo $m['name'];
echo $m['kills'];
}
?>
 

Ya plus qu'à trouver comment classer le tout en fonction des kills ($m['kills'];)

Dernière modification par Anthotill (09-05-2012 12:50:50)

Hors ligne

#6 09-05-2012 20:35:17

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Arrays plusieurs dimmensions

Bonjour,

Après les bases de données gérées en environnement objet, voici maintenant la version tabulaire. On se demande d'ailleurs pourquoi du coup tu ne fais pas tout cela sur une feuille de calcul excel. Mais bon, pourquoi faire simple quand on peut faire compliqué wink

anthothil a écrit :

Je suis perdu du coup, il y a tellement de tableau !

Je te rassure, c'est moins évident pour nous que pour toi qui l'a conçu à la base..
Une solution simple : passer par des vues SQL.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 09-05-2012 21:33:25

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Arrays plusieurs dimmensions

Jc a écrit :

Bonjour,

Après les bases de données gérées en environnement objet, voici maintenant la version tabulaire. On se demande d'ailleurs pourquoi du coup tu ne fais pas tout cela sur une feuille de calcul excel. Mais bon, pourquoi faire simple quand on peut faire compliqué wink

anthothil a écrit :

Je suis perdu du coup, il y a tellement de tableau !

Je te rassure, c'est moins évident pour nous que pour toi qui l'a conçu à la base..
Une solution simple : passer par des vues SQL.

++

Hehe, si je l'avais conçu je n'aurais probablement pas de problème pour l'exploiter ! Mais je pense que le tableau est obligatoire dans cette situation au vue du nombre d'éléments à afficher mais au vue de votre réaction, je suppose que ce ne doit pas être la meilleure solution lol

Hors ligne

#8 09-05-2012 22:15:32

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Arrays plusieurs dimmensions

Question API et la requête envoyée au serveur, on se demande du coup le bien fondé de sa pertinence, car vu la volumétrie des informations retournées, on se demande si la requête ne correspondrait pas à un truc du genre
$API->get_database()  big_smile

Dernière modification par Jc (09-05-2012 22:16:08)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums