begin process at 2012 05 30 21:47:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Fusion de tableaux multidimensions en fonction d'une clé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fusion de tableaux multidimensions en fonction d'une clé

jeudi 25 août 2005 à 19:53:13 | Fusion de tableaux multidimensions en fonction d'une clé

nikoo3

Salut à tous, j'ai un problème en PHP que je n'arrive pas à résoudre:
j'ai deux tableaux séprarés qui ont 5 dimensions, dont une qui est une date.
Je dois fusionner ces deux tableaux, par date croissante, pour ensuite afficher l'unique tableau résultat.
Je n'y arrive pas. J'ai tenté de me servir da la fonction array_multisort, mais sans succès...
Quelqu'un peut il m'aider?

Merci beaucoup.

PS: si ce que je dis n'a pas été clair, n'hésitez pas à m'écrire à nicube à free.fr 
jeudi 25 août 2005 à 20:10:19 | Re : Fusion de tableaux multidimensions en fonction d'une clé

coucou747

Administrateur CodeS-SourceS
moi je pensais à un foreach puis un sort... vas sur php.net et cherches array
jeudi 25 août 2005 à 20:36:16 | Re : Fusion de tableaux multidimensions en fonction d'une clé

nikoo3

Je vais peut être préciser en fait ce que je cherche :

Comment trier un tableau multidimension en fonction d'une des colones ?
 EX : classement d'un tableau a deux dimension en fonction de la date 
NICO   22/10/2005               JEAN   23/01/2005
JULIE   01/07/2005      ==>   MARC   06/05/2005
MARC   06/05/2005               JULIE 01/07/2005
JEAN   23/01/2005               NICO   22/10/2005




       Je pense que ca doit être faisable en appelant une fonction. Faire une boucle rend la complexité de l'algo énorme.

Merci encore

jeudi 25 août 2005 à 20:46:38 | Re : Fusion de tableaux multidimensions en fonction d'une clé

coockiesch

Pour trier, tu devrais regarder: [ Lien ]

Je viens de faire:
function compare( $a, $b )
{
    if( $a[1] == $b[1] )
        return 0;
 
    return ( $a[1] > $b[1] ) ? -1 : 1;
}
       
$donnees = array( array( 'NICO', '22/10/2005' ), array( 'JULIE', '01/07/2005' ), array( 'MARC', '06/05/2005' ), array( 'JEAN', '23/01/2005' ) );
foreach( $donnees as $value )
    echo $value[0] . ' ' . $value[1] . '<br />';
   
echo '<br />';

uksort( $donnees, "compare" );
foreach( $donnees as $value )
    echo $value[0] . ' ' . $value[1] . '<br />';

Et ca affiche:
NICO 22/10/2005
JULIE 01/07/2005
MARC 06/05/2005
JEAN 23/01/2005

JEAN 23/01/2005
MARC 06/05/2005
JULIE 01/07/2005
NICO 22/10/2005

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
jeudi 25 août 2005 à 20:56:05 | Re : Fusion de tableaux multidimensions en fonction d'une clé

J_G

Salut, ceci ammène cela :


array_multisort

(PHP 4, PHP 5)

array_multisort -- Tri multi-dimensionnel de tableaux

Description

bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

array_multisort() sert à trier simultanément plusieurs tableaux, ou bien à trier un tableau multi-dimensionnel, suivant l'une ou l'autre de ses dimensions.

jeudi 25 août 2005 à 22:58:33 | Re : Fusion de tableaux multidimensions en fonction d'une clé

nikoo3

Merci pour ton aide coockiesch , mais la solution ne marche pas

En effet, pour l'exemple donné ca fonctionne, mais en implémentant la solution j'ai eu des problèmes...
Si tu prends le code suivant

<?php
function compare( $a, $b )
{
    if( $a[1] == $b[1] )
        return 0;

    return ( $a[1] > $b[1] ) ? -1 : 1;
}

$donnees = array( array( 'NICO', '22/01/2005' ), array( 'JULIE', '01/01/2005' ), array( 'MARC', '06/01/2005', ), array( 'JEAN', '23/01/2005' ) );
foreach( $donnees as $value )
    echo $value[0] . ' ' . $value[1] . '<br />';

echo '<br />';

uksort( $donnees, "compare" );
foreach( $donnees as $value )
    echo $value[0] . ' ' . $value[1] . '<br />';
?>


(Le meme avec des dates dans le meme mois)

le résultat n'est pas bon:

NICO 22/01/2005
JULIE 01/01/2005
MARC 06/01/2005
JEAN 23/01/2005

JEAN 23/01/2005
MARC 06/01/2005
JULIE 01/01/2005
NICO 22/01/2005

et je ne sais pas trop pourquoi...

Je suis donc toujours sans solution...
Merci de votre aide

jeudi 25 août 2005 à 23:42:57 | Re : Fusion de tableaux multidimensions en fonction d'une clé

coockiesch

Salut!
Il doit prendre ca comme des chaînes de caractères, faudrait utiliser des timestamp. TU peux aps générer les timestamp des dates avant de classer tout ca?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
vendredi 26 août 2005 à 16:33:00 | Re : Fusion de tableaux multidimensions en fonction d'une clé

nikoo3

Réponse acceptée !

Ca n' rien donné de mieux avec les timestamp.
Je suis passé par un tri à bulle :
<?php
 function DateToNumber($a)
 {
    return  mb_strcut ($a ,6 ,4).mb_strcut ($a ,3 ,2).mb_strcut ($a ,0 ,2);
}
 function NumberToDate($a)
 {
    return  mb_strcut ($a ,6 ,2)."/".mb_strcut ($a ,4 ,2)."/".mb_strcut ($a ,0 ,4);
}

function Tri_A_Bulle ($Tab, $NbElem)
{

 $k = $NbElem;
 while ($k > 1)
 {
  for ($i = 0; $i < ($NbElem - 1); $i++)
  {
   echo "<br>".$i .": ".$Tab[$i][1];

      echo "<br>";echo $i+1;echo ": "; echo $Tab[$i+1][1];
      echo "<br>";
      //$i--;
   if ($Tab[$i][1] > $Tab [$i+1][1])
   {
      //Permuter ($Tab[$i], $Tab[$i + 1]);
      $Tmp = $Tab[$i];
      
       $Tab[$i]=$Tab[$i+1];
       $Tab[$i+1]= $Tmp;
       
     }
    
  }
  $k--;
 }
 return $Tab;
}

 function DateToNumber($a)
 {
 
    $chaine = substr ($a ,6 ,4).substr ($a ,3 ,2).substr ($a ,0 ,2);
    return $chaine;
}
 function NumberToDate($a)
 {
    return  substr ($a ,6 ,2)."/".substr ($a ,4 ,2)."/".substr ($a ,0 ,4);
}

$donnees = array( array( 'NICO', DateToNumber('22/01/2005') ),
array( 'JULIE', DateToNumber('01/01/2005') ), array( 'MARC', DateToNumber('06/01/2005') ),
 array( 'JEAN', DateToNumber('23/01/2005') ) );
foreach( $donnees as $value )
    echo $value[0] . ' ' . $value[1] . '<br />';

echo '<br />';

$donnees = Tri_A_Bulle( $donnees,sizeof($donnees));
foreach( $donnees as $value )
    echo $value[0] . ' ' . NumberToDate($value[1] ). '<br />';
?>


Ca pourra toujours servir a quelqu'un...
Cependant cette solution est tres lourde, et je conseille a ceux qui ont de gros tableaux de passer par un autre tri.
Merci en tout cas de vos réponse.
Nico.



Cette discussion est classée dans : fonction, tableaux, clé, fusion, multidimensions


Répondre à ce message

Sujets en rapport avec ce message

Retourner la position d'une clé d'un tableau associatif [ par mentral ] BonjourQuestion certainement conne s'il en est mais j'ai dû louper une fonction de base : comment trouver la position d'une clé dans un tableau associ passage de tableaux en paramètre à une fonction [ par FreakDev ] salut à tous,euh... une question de noob... dsl mais j'ai pas trouver d'exemple dans la doc officielle (euh... il est possible que j'ai mal chercher d Génération et affichage d'une clé d'activation en fonction de la date du jour. [ par KarLTkT ] Bonjour, Je cherche le moyen de générer des clés d'activation en fonction de la date du jour, après validation d'un formulaire. Concrètement, l'uti Tableaux [ par Baba Cool ] Hola ! Je suis nul en javasript et j’ai un petit problème. Je dois faire passer les valeurs d’un tableau qui a été généré en PHP dans une fonction Ja ftp_put question C... [ par cacoun ] Salut à tous....Je suis entrain de réaliser un site permettant à des personnes extérieures d'uploader des fichiers sur mon serveur.Au vu du forum, je Comment executer une fonction php en appuyant sur un bouton formulaire [ par zeguizmo ] Salut a tous ! Ma question est simple : Comment exécuter une fonction php en appuyant sur un bouton de formulaire Exemple : echo ""; echo "<input rechercher à signial audio par mot clé son [ par dardarsalma ] Bonjour à tous, j ai eu à chercher un peu partout sans trouver une petite voie à mon problème. Dans une base de données des discours d’hommes politi problem mise ajour base de donn¶e suite au fonction chmod [ par bsmsadok ] Salut, j'ai telecharger le Livre D'or TWIGGY02 vers 1.0 http://www.toocharger.com/telecharger/scripts/livre-d-or/3962.htm. mon problem c'est que l' Undefined offset [ par WrestlingMan ] Bonjour !! J'espère que us pourrez m'aider !! Je fait un formulaire avec uniquement des cases à cocher !! Chaque bénévole à une fonction !! Il faut do Problème avec la fonction preg_replace [ par Sub_Mat ] Bonjour à tous, [b]Voici mon problème :[/b] Je récupère de ma base de donnée une donnée commentaire. Dans ce commentaire, il y a des images qui sont


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales