Tri de array, complexe

Résolu
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 - 29 janv. 2008 à 02:17
helorem Messages postés 49 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 3 février 2008 - 30 janv. 2008 à 11:19
Salut a tous!

J'utilise des array à multi niveaux pour stoker de l'informations sur des medias.
Je voudrais une fois toutes l'informations entrer dans le array, pouvoir trier le array sur un niveau enfant je ne sais pas si ca se fait mais bon une image vaut mille maux.

Voici un exemple du array:

$medias = array(
    int(1) => array(
       'title' => "ma chanson",
       'artists' => array(
          ' artist_line_texte ' => "moi pis toi",
          'artists_ids' = > array(
             int(1) => '1',
             int(2) => '3')
          'artists_names' => array(
             int(1) => 'moi',
             int(2) => 'toi')
       ...)
    )
    int(2) => ...
)

Dans cet example je voudrais trier pas artits_line_texte , sans bousiller toute ma variable.

Je ne suis pas fermer au solution alternative tel que le xml ou autre si ca peut simplifier le tout...

<hr size ="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]

3 réponses

helorem Messages postés 49 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 3 février 2008
29 janv. 2008 à 11:43
Zalut Zen69,

Pour gerer autant d'informations, ca serait pas mal de passer pas une methodologie objet, par exemple :
media (id, title, artists[], artists_line_text);
artist (id, name);

comme ca tu fais un tri normal, avec comme condition $medias[1]->artists_line_text > $medias[2]->artists_line_text
( je suis pas sure de la syntax)

Autrement, pour rester dans cette forme, il faudrait ne pas utiliser des clés de tableau string mais que des int, genre
$medias = array(
    int(1) => array(
       int(1) => "ma chanson",
       int(2) => array(
          int(1) => "moi pis toi",
          int(2) => array(
             int(1) => '1',
             int(2) => '3')
          int(3) => array(
             int(1) => 'moi',
             int(2) => 'toi')
       ...)
    )
    int(2) => ...
)
ca voudrait dire que artists_line_text de la premiere ligne c'est le champ 121, le nom du premier artist c'est 1231, etc
Apres tu fait une fonction qui recupere la valeur selon le champ, et tu compare.
3
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
29 janv. 2008 à 22:10
Ouin je suis pas mal d'accord avec toi...

En fait mon array n'etais pas encore construit... je voulais simplement avoir d'autre avis avant de passer du temps a coder tout ca (pe pour rien)

En fait ce que je crois que je vais faire c'est un array artistes et un array medias

le array artistes va resembler a ca :
    $artists = array(
       'medias id' => 'art_line_text',
    );
et faire un simple sort

puis aller recuperer les medias id (trier) du array medias...

Qu'est-ce que tu en penses...?

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
3
helorem Messages postés 49 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 3 février 2008
30 janv. 2008 à 11:19
Ouais ca sera plus simple a gerer et aussi a relir...
0
Rejoignez-nous