Problème d'array

Problème d'array - PHP - Programmation

Marsh Posté le 08-07-2010 à 19:58:52    

Salut, j'aimerais réorganiser mon array mais je vois pas comment faire. J'ai essayé de diverses façon avec des foreach mais je n'arrive pas à obtenir le résultat escompté...

 

En fait j'utilise une api (flickr) qui me renvoit un array qui se présente comme ça:

 
Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [4774155148] => Array
  6.                 (
  7.                     [service_id] => 84
  8.                     [flickrPicId] => 4774155148
  9.                     [photolink] => http://farm5.static.flickr.com/4096/4774155148_39f95ee3a4.jpg
  10.                     [photodate] => 1278584637
  11.                     [user_id] => 44
  12.                 )
  13.             [4774146102] => Array
  14.                 (
  15.                     [service_id] => 84
  16.                     [flickrPicId] => 4774146102
  17.                     [photolink] => http://farm5.static.flickr.com/4099/4774146102_2f30c5356c.jpg
  18.                     [photodate] => 1278584192
  19.                     [user_id] => 44
  20.                 )
  21.             [4774099090] => Array
  22.                 (
  23.                     [service_id] => 84
  24.                     [flickrPicId] => 4774099090
  25.                     [photolink] => http://farm5.static.flickr.com/4079/4774099090_92e870e2ce.jpg
  26.                     [photodate] => 1278581958
  27.                     [user_id] => 44
  28.                 )
  29.             [4748347869] => Array
  30.                 (
  31.                     [service_id] => 84
  32.                     [flickrPicId] => 4748347869
  33.                     [photolink] => http://farm5.static.flickr.com/4120/4748347869_bed829a760.jpg
  34.                     [photodate] => 1277902930
  35.                     [user_id] => 44
  36.                 )
  37.             [4748347723] => Array
  38.                 (
  39.                     [service_id] => 84
  40.                     [flickrPicId] => 4748347723
  41.                     [photolink] => http://farm5.static.flickr.com/4115/4748347723_6af7939953.jpg
  42.                     [photodate] => 1277902926
  43.                     [user_id] => 44
  44.                 )
  45.         )
  46.     [1] => Array
  47.         (
  48.             [4723647573] => Array
  49.                 (
  50.                     [service_id] => 84
  51.                     [flickrPicId] => 4723647573
  52.                     [photolink] => http://farm2.static.flickr.com/1175/4723647573_59afdc60fe.jpg
  53.                     [photodate] => 1277208645
  54.                     [user_id] => 2
  55.                 )
  56.             [4724299716] => Array
  57.                 (
  58.                     [service_id] => 84
  59.                     [flickrPicId] => 4724299716
  60.                     [photolink] => http://farm2.static.flickr.com/1407/4724299716_8a54a35fd7.jpg
  61.                     [photodate] => 1277208643
  62.                     [user_id] => 2
  63.                 )
  64.             [4723647485] => Array
  65.                 (
  66.                     [service_id] => 84
  67.                     [flickrPicId] => 4723647485
  68.                     [photolink] => http://farm2.static.flickr.com/1344/4723647485_4b31be7bee.jpg
  69.                     [photodate] => 1277208642
  70.                     [user_id] => 2
  71.                 )
  72.         )
  73.   [2]=> etc etc...
  74. )
 

Je voudrais obtenir ce résultat:

 
Code :
  1. Array
  2. (
  3.     [4723647485] => Array
  4.         (
  5.             [2] =>array
  6.                     (
  7.                      [service_id] => 84
  8.                      [flickrPicId] => 4723647485
  9.                      [photolink] => http://farm2.static.flickr.com/1344/4723647485_4b31be7bee.jpg
  10.                      [photodate] => 1277208642
  11.                      [user_id] => 2
  12.                     )   
  13.         )
  14.   // etc.. idem pour chaque flikrPicId, je ne veux plus de la première couche (les keys avec des valeurs numériques)
 

en gros la première couche ce serait des keys qui sont la valeur du flickrPicId.
la deuxième couche ce serait le numero de l'user_id.
et en 3eme couche on remet toutes les infos telles quelles (même si ça se répète).
Et on fait ça pour chaque flickrPicId.

 


Ce problème me casse la tête, je suis encore loin d'être un pro du php, est ce qu'il y a une façon simple d'arriver au résultat escompté ou est-ce qu'il faut carrément créer une fonction?


Message édité par caribouuu le 08-07-2010 à 19:59:52

---------------
Bla (blaa bbla)
Reply

Marsh Posté le 08-07-2010 à 19:58:52   

Reply

Marsh Posté le 09-07-2010 à 05:48:42    

il ne manque pas des virgules dans la sous partie des tableaux ?
et ce que tu veux faire, c'est bien incrémenter un tableau neuf avec des valeurs extraites d'autres tableaux ?
J'essaye de comprendre mais si je me plante dis moi.
Interessant j'essayerai de creuser avec ce qu'on m'a récemment appris sur les tableaux.


Message édité par erwan83 le 09-07-2010 à 05:49:32

---------------
http://www.ypikay.com
Reply

Marsh Posté le 09-07-2010 à 06:16:08    

donc il te faudrait, si je suis toujours, faire une sorte de foreach sur un tableau à trois dimensions et à chaque boucle, tu remets tout ça dans un nouveau tableau mais à deux dimensions en faisant sauter la première ?
excuse, je parle de dimensions alors que ce sont peut etre des couches mais j'espère qu'on se comprend.
espérons que ça va orienter nos petits copains du forum PHP
Allez les gars filez-lui un coup de main !!!


---------------
http://www.ypikay.com
Reply

Marsh Posté le 09-07-2010 à 08:23:30    

Le plus simple selon moi serait de partir d'un tableau vide, de boucler sur les deux niveaux (deux "for" ou "foreach" imbriqués) et au fur et à mesure de remplir ton nouveau tableau avec les clés et les valeurs que tu trouves dans le tableau de départ.
 
Essaie ceci par exemple (pas testé)
 

Code :
  1. $resultat = array();
  2. foreach ($flickr as $flickr1) {   // ici tu boucles sur le premier niveau
  3.     foreach ($flickr1 as $cleflickr2 => $valeurflickr2) {  // ici tu boucles sur le second niveau en lisant la clé (4723647485)
  4.        
  5.          $resultat[$cleflickr2] = array();
  6.          $resultat[$cleflickr2][$valeurflickr2['user_id']] = $valeurflickr2;
  7.     }
  8. }


Reply

Marsh Posté le 09-07-2010 à 23:11:28    

Merci pour votre aide à tous les deux, ta solution fonctionne nickel jeff@be ;)  :jap:

 

Faut vraiment que j'apprenne à mieux maitriser les arrays et les foreach, ça me fait perdre un temps fou à chaque fois. Je vais me faire des petits exos maison de manipulation d'array pour bien assimiler les différentes possibilités


Message édité par caribouuu le 09-07-2010 à 23:11:44

---------------
Bla (blaa bbla)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed