Partage
  • Partager sur Facebook
  • Partager sur Twitter

manipulation d'Array

Sujet résolu
    8 avril 2011 à 11:59:20

    Bonjour !

    en faisant un var_dump de mon tableau j'obtiens ces valeurs :

    Bonjour !

    en faisant un var_dump de mon tableau j'obtiens ces valeurs :

    array(2) {
      [0]=>
      string(5) "  140"
      [1]=>
      string(3) "  1"
    }
    array(2) {
      [0]=>
      string(5) " 1784"
      [1]=>
      string(3) "  1"
    }
    array(2) {
      [0]=>
      string(5) " 1784"
      [1]=>
      string(3) "  2"
    }
    array(2) {
      [0]=>
      string(5) " 2032"
      [1]=>
      string(3) "  1"
    }
    array(2) {
      [0]=>
      string(5) " 2548"
      [1]=>
      string(3) "  1"
    }
    array(2) {
      [0]=>
      string(5) " 2548"
      [1]=>
      string(3) "  2"
    }
    array(2) {
      [0]=>
      string(5) " 3179"
      [1]=>
      string(3) "  1"
    }
    array(2) {
      [0]=>
      string(5) " 3891"
      [1]=>
      string(3) "  1"
    }
    array(2) {
      [0]=>
      string(5) " 3891"
      [1]=>
      string(3) "  6"
    }
    array(2) {
      [0]=>
      string(5) " 3891"
      [1]=>
      string(3) " 11"
    }
    array(2) {
      [0]=>
      string(5) " 3891"
      [1]=>
      string(3) " 16"
    }
    array(2) {
      [0]=>
      string(5) " 3891"
      [1]=>
      string(3) " 21"
    }
    array(2) {
      [0]=>
      string(5) " 3891"
      [1]=>
      string(3) " 26"
    }
    

    ******************************


    Et je voudrais qu'elles prennent cette forme :

    $tab = array("  140"=>array(1),  
    			 " 1784"=>array(1,2),  
    			 " 2032"=>array(1),
    			 " 2548"=>array(1,2),
    			 " 3179"=>array(1),
    			 " 3891"=>array(1,6,11,16,21,26)
    			 );
    


    " 3891"=>array(1,6,11,16,21,26) ici ce sont mes "intervalles", et je voudrais les mettre en 'binome' ("1-6", "6-11", "11-16", "16-21", "21-26" ) afin d'avoir des intervalles pour un BETWEEN sql,
    et ensuite avec une boucle faire des requetes du style:


    "SELECT champ1, champ2 FROM ma_table WHERE champ1 = 3891 AND champ2 BETWEEN 1 AND 6 " 
     "SELECT champ1, champ2 FROM ma_table WHERE champ1 = 3891 AND champ2 BETWEEN 6 AND 11 "
    
    etc...

    Mais j'avoue que je rame tellement que je vais bientôt toucher les grands fonds !!!
    Auriez vous une idée ?
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2011 à 12:05:32

      <?php
      $newTab = array();
      foreach ($oldTab as $array)
      {
          if (!empty($newTab[$array[0]])) $newTab[$array[0]][] = $array[1];
          else $newTab[$array[0]] = array($array[1]);
      }
      print_r($newTab);
      
      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2011 à 16:52:45

        Merci Taguan :D !

        Ton code roule parfaitement, et met 3 fois moins de temps que ce que j'avais fait, et qui etait plutot bancal !

        Pour mon histoire d'intervalles pour les requetes et les BETWEEN, saurais tu comment je dois operer
        pour avoir " 3891"=>array(1,6,11,16,21,26) qui deviendrait ca " 3891"=>array("1-6", "6-11", "11-16", "16-21", "21-26" ) ?

        Une fonction recursive ?

        Là aussi je seche. :euh:
        Merci d'avance.
        • Partager sur Facebook
        • Partager sur Twitter
          8 avril 2011 à 16:58:23

          T'as des problèmes d'algorithmique dis donc...

          <?php
          foreach ($newTab as $champ1 => $champ2)
          {
              for($i = 0, $nb=count($champ2)-1 ; $i < $nb ; $i++)
              {
                  $sql = 'SELECT champ1, champ2 FROM ma_table WHERE champ1 = '.$champ1.' AND champ2 BETWEEN '.$champ2[$i].' AND '.$champ2[$i+1];
                  echo $sql;
              }
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            11 avril 2011 à 8:56:37

            Salut Taguan !

            Citation : Taguan

            T'as des problèmes d'algorithmique dis donc...


            Ouille ça pique, ^^ mais oui je reconnais que j'ai des "lacunes" de ce côté.
            Un conseil bibliographique peut être pour les combler ?
            Et qu'il va falloir que j'y remédie rapidement. Mais en attendant il me faut avancer...

            Donc merci pour avoir pris le temps de te pencher sur ma requête !

            Salut !
            • Partager sur Facebook
            • Partager sur Twitter

            manipulation d'Array

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown