Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertir une string an array et la remplir après

    23 janvier 2017 à 8:42:08

    Bonjour,

    Je cherche à convertir uns string en array et la remplir avec des valeurs d'un autre tableau:

    $arr = ['Trousers','Dresses'];
    $arr1 = ['Simple trousers', 'Jeans'];
    $arr2 = ['Night dress', 'Wedding dress'];

    Je souhaite un résultat comme:

    [Trousers] => Simple, Jeans
    [Dresses] => Night dress, Wedding dress

    Merci à vous

    -
    Edité par AbuRayane 23 janvier 2017 à 8:42:29

    • Partager sur Facebook
    • Partager sur Twitter
      23 janvier 2017 à 9:15:52

      J'ai 2 solutions.

      $arr = ['Trousers' => [],'Dresses' => []];
      $arr1 = ['Simple trousers', 'Jeans'];
      $arr2 = ['Night dress', 'Wedding dress'];
      array_merge($arr['Trousers'], $arr1);
      array_merge($arr['Dresses'], $arr2);
      
      
      // après il y a implode et explode
      
      $chaine = "un,deux,trois";
      $arr = [];
      explode(",", $arr);
      // $arr = ["un", "deux", "trois"]
      $chaine2 = implode(",", $arr);
      // $chaine2 = "un,deux,trois"



      • Partager sur Facebook
      • Partager sur Twitter
        23 janvier 2017 à 11:31:43

        $res = array_map(
            function ($v) {
                return implode(', ', $v);
            },
            array_combine($arr, [$arr1, $arr2])
        );
        var_dump($res);
        

        ?

        -
        Edité par julp 23 janvier 2017 à 11:33:16

        • Partager sur Facebook
        • Partager sur Twitter
          24 janvier 2017 à 4:00:34

          Je n'ai pas aboutis à ce que je cherche exactement, ci-après un exemple plus clair:

          J'ai 2 tables: categories_article et categories_article_sub, lors de la sélection des article_name_en, je dois les convertir en array, afin d'insérer leurs article_name_sub_en, autrement dit, avoir quelque chose dans un tableau comme:


          Trousers: Simple trouser, Combi-trousers, Jeans
          Dresses: Night Dresses, Simple dresses, Wedding dresses



          mysql> SELECT ida, article_name_en FROM `categories_article`;
          +-----+-----------------+
          | ida | article_name_en |
          +-----+-----------------+
          |   1 | Trousers        |
          |   2 | Dresses         |
          +-----+-----------------+
          2 rows in set (0.00 sec)
          
          mysql> SELECT idm_article, article_name_sub_en FROM `categories_article_sub`;
          +-------------+---------------------+
          | idm_article | article_name_sub_en |
          +-------------+---------------------+
          |           1 | Simple trouser      |
          |           1 | Combi-trousers      |
          |           1 | Jeans               |
          |           2 | Night Dresses       |
          |           2 | Simple dresses      |
          |           2 | Wedding dresses     |
          +-------------+---------------------+
          6 rows in set (0.00 sec)
          

          Et voici le code PHP

          <?php
          
          $sql = "SELECT * FROM  `categories_article`";
          $stmt = $connect->prepare($sql);
          $stmt->execute();
          $result = $stmt->fetchAll();
          
          echo '<pre>';
          
          $mainArticle = [];
          $subArticle = [];
          
          foreach ($result as $value):
              
              $ida                = $value['ida'];
              $article_name_en    = $value['article_name_en'];
              
              
          $sqla = "SELECT * FROM  `categories_article_sub`";
          $stmta = $connect->prepare($sqla);
          $stmta->execute();
          $resulta = $stmta->fetchAll();
          
          
              foreach ($resulta as $values):
              
                  $idm_article            = $values['idm_article'];
                  $article_name_sub_en    = $values['article_name_sub_en'];
                  
                  // si ida == idm_article
                   if($ida == $idm_article){
                       
                       // ajouter les sous articles a leurs articles d'origine
                       
                       // Simple trouser => Trousers
                       // Wedding dresses => Dresses
                  } 
                  
              endforeach;
          
          endforeach;
          
          
          ?>
          




          • Partager sur Facebook
          • Partager sur Twitter
            24 janvier 2017 à 7:36:12

            Bonjour,

            Pourquoi passer dans le code ci-dessus par une boucle sur la catégorie d'article pour obtenir par de nouvelles requêtes les articles ?

            Faire directement un select avec jointure ne convient pas ? et il me semble qu'ainsi le sujet serait quasi résolu.

            A+

            • Partager sur Facebook
            • Partager sur Twitter
              24 janvier 2017 à 17:21:43

              SELECT * FROM  `categories_article_sub` , `categories_article` 
              WHERE id_article = id_categorie
              Tu sais que tu peux faire ça ?
              • Partager sur Facebook
              • Partager sur Twitter
                26 janvier 2017 à 8:29:44

                J'ai deja teste les 2 requetes:

                $sql = "SELECT * FROM  `categories_article_sub` , `categories_article` WHERE ida = idm_article";

                ainsi que:

                $sql = "SELECT * FROM  `categories_article_sub` JOIN `categories_article` ON ida = idm_article";

                Le resultat est:

                Trousers
                Simple trouser
                Combi-trousers
                Trousers
                Jeans
                Dresses
                Night Dresses
                Dresses
                Simple dresses
                Dresses
                Wedding dresses
                Je cherche quelque chose comme:
                +Trousers
                Simple trouser
                Combi-trousers
                Jeans
                +Dresses
                Night Dresses
                Simple dresses
                Wedding dresses
                • Partager sur Facebook
                • Partager sur Twitter
                  26 janvier 2017 à 9:23:17

                  utilise group by pour regrouper suivant +Trousers
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 janvier 2017 à 20:36:27

                    Un fetchAll retourne un tableau - ce n'est pas ce que tu nous montres.

                    La requête avec jointure ci-dessus type 1 est à mon sens correcte.

                    Tu pourrais nous montrer son résultat sous la forme d'un print_r($resultat) ?

                    A+

                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 janvier 2017 à 15:28:18

                      voici le print_r($resulta)

                      (
                          [0] => Array
                              (
                                  [idas] => 1
                                  [0] => 1
                                  [idm_article] => 1
                                  [1] => 1
                                  [article_name_sub_en] => Simple trouser
                                  [2] => Simple trouser
                                  [article_name_sub_fr] => Pantalon simple
                                  [3] => Pantalon simple
                                  [article_name_sub_ar] => بنطلون عادي
                                  [4] => بنطلون عادي
                                  [article_sub_key] => art_58843ec65ee
                                  [5] => art_58843ec65ee
                                  [article_sub_on_off] => 1
                                  [6] => 1
                                  [ida] => 1
                                  [7] => 1
                                  [scat_id] => 1
                                  [8] => 1
                                  [is_main] => 1
                                  [9] => 1
                                  [article_name_en] => Trousers
                                  [10] => Trousers
                                  [article_name_fr] => Pantalons
                                  [11] => Pantalons
                                  [article_name_ar] => بنطلون
                                  [12] => بنطلون
                                  [article_key] => art_58843e89de6
                                  [13] => art_58843e89de6
                                  [article_on_off] => 1
                                  [14] => 1
                              )
                      
                          [1] => Array
                              (
                                  [idas] => 2
                                  [0] => 2
                                  [idm_article] => 1
                                  [1] => 1
                                  [article_name_sub_en] => Combi-trousers
                                  [2] => Combi-trousers
                                  [article_name_sub_fr] => Combi-pantalons
                                  [3] => Combi-pantalons
                                  [article_name_sub_ar] => 
                                  [4] => 
                                  [article_sub_key] => art_588447589de
                                  [5] => art_588447589de
                                  [article_sub_on_off] => 1
                                  [6] => 1
                                  [ida] => 1
                                  [7] => 1
                                  [scat_id] => 1
                                  [8] => 1
                                  [is_main] => 1
                                  [9] => 1
                                  [article_name_en] => Trousers
                                  [10] => Trousers
                                  [article_name_fr] => Pantalons
                                  [11] => Pantalons
                                  [article_name_ar] => بنطلون
                                  [12] => بنطلون
                                  [article_key] => art_58843e89de6
                                  [13] => art_58843e89de6
                                  [article_on_off] => 1
                                  [14] => 1
                              )
                      
                          [2] => Array
                              (
                                  [idas] => 3
                                  [0] => 3
                                  [idm_article] => 1
                                  [1] => 1
                                  [article_name_sub_en] => Jeans
                                  [2] => Jeans
                                  [article_name_sub_fr] => Jeans
                                  [3] => Jeans
                                  [article_name_sub_ar] => 
                                  [4] => 
                                  [article_sub_key] => art_588447871bc
                                  [5] => art_588447871bc
                                  [article_sub_on_off] => 1
                                  [6] => 1
                                  [ida] => 1
                                  [7] => 1
                                  [scat_id] => 1
                                  [8] => 1
                                  [is_main] => 1
                                  [9] => 1
                                  [article_name_en] => Trousers
                                  [10] => Trousers
                                  [article_name_fr] => Pantalons
                                  [11] => Pantalons
                                  [article_name_ar] => بنطلون
                                  [12] => بنطلون
                                  [article_key] => art_58843e89de6
                                  [13] => art_58843e89de6
                                  [article_on_off] => 1
                                  [14] => 1
                              )
                      
                          [3] => Array
                              (
                                  [idas] => 4
                                  [0] => 4
                                  [idm_article] => 2
                                  [1] => 2
                                  [article_name_sub_en] => Night Dresses
                                  [2] => Night Dresses
                                  [article_name_sub_fr] => Robes du soir
                                  [3] => Robes du soir
                                  [article_name_sub_ar] => 
                                  [4] => 
                                  [article_sub_key] => art_588448025df
                                  [5] => art_588448025df
                                  [article_sub_on_off] => 1
                                  [6] => 1
                                  [ida] => 2
                                  [7] => 2
                                  [scat_id] => 1
                                  [8] => 1
                                  [is_main] => 1
                                  [9] => 1
                                  [article_name_en] => Dresses
                                  [10] => Dresses
                                  [article_name_fr] => Robes
                                  [11] => Robes
                                  [article_name_ar] => 
                                  [12] => 
                                  [article_key] => art_588448025d9
                                  [13] => art_588448025d9
                                  [article_on_off] => 1
                                  [14] => 1
                              )
                      
                          [4] => Array
                              (
                                  [idas] => 5
                                  [0] => 5
                                  [idm_article] => 2
                                  [1] => 2
                                  [article_name_sub_en] => Simple dresses
                                  [2] => Simple dresses
                                  [article_name_sub_fr] => Robes simples
                                  [3] => Robes simples
                                  [article_name_sub_ar] => 
                                  [4] => 
                                  [article_sub_key] => art_58844d1b934
                                  [5] => art_58844d1b934
                                  [article_sub_on_off] => 1
                                  [6] => 1
                                  [ida] => 2
                                  [7] => 2
                                  [scat_id] => 1
                                  [8] => 1
                                  [is_main] => 1
                                  [9] => 1
                                  [article_name_en] => Dresses
                                  [10] => Dresses
                                  [article_name_fr] => Robes
                                  [11] => Robes
                                  [article_name_ar] => 
                                  [12] => 
                                  [article_key] => art_588448025d9
                                  [13] => art_588448025d9
                                  [article_on_off] => 1
                                  [14] => 1
                              )
                      
                          [5] => Array
                              (
                                  [idas] => 6
                                  [0] => 6
                                  [idm_article] => 2
                                  [1] => 2
                                  [article_name_sub_en] => Wedding dresses
                                  [2] => Wedding dresses
                                  [article_name_sub_fr] => Robes de mariage
                                  [3] => Robes de mariage
                                  [article_name_sub_ar] => 
                                  [4] => 
                                  [article_sub_key] => art_58844d1b945
                                  [5] => art_58844d1b945
                                  [article_sub_on_off] => 1
                                  [6] => 1
                                  [ida] => 2
                                  [7] => 2
                                  [scat_id] => 1
                                  [8] => 1
                                  [is_main] => 1
                                  [9] => 1
                                  [article_name_en] => Dresses
                                  [10] => Dresses
                                  [article_name_fr] => Robes
                                  [11] => Robes
                                  [article_name_ar] => 
                                  [12] => 
                                  [article_key] => art_588448025d9
                                  [13] => art_588448025d9
                                  [article_on_off] => 1
                                  [14] => 1
                              )
                      
                      )



                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 janvier 2017 à 20:41:38

                        Je ne sais quelle requête tu as fait ...

                        Mais tu vois que tu as un tableau de 6 éléments de 0 à 5 et avec des clefs et des valeurs.

                        Les clefs sont normalement les champs de ta requête et donnent les valeurs. Qu'as tu demandé comme résultat en terme de champs ?

                        A partir de là, si tu veux les manipuler il suffit de parcourir les tableaux par un foreach.

                        A+

                        -
                        Edité par monkey3d 30 janvier 2017 à 20:42:13

                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 janvier 2017 à 21:19:03

                          Tu peux grouper sur une colonne (la première renvoyée par le SELECT) via fetchAll et l'option PDO::FETCH_GROUP:

                          $stmt = $bdd->query(<<<'EOS'
                              SELECT article_name_en, *
                                  FROM  categories_article_sub
                                  JOIN categories_article ON ida = idm_article
                          EOS
                          );
                          $res = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
                          foreach ($res as $k => $suba) {
                              echo '<h2>', htmlspecialchars($k), '</h2>';
                              echo '<ul>';
                              foreach ($suba as $row) {
                                  echo '<li>', htmlspecialchars($row['article_name_sub_en']), '</li>';
                              }
                              echo '</ul>';
                          }
                          

                          -
                          Edité par julp 30 janvier 2017 à 21:20:11

                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 février 2017 à 4:08:32

                            J'ai utilisé cette requete:

                            SELECT * FROM  `categories_article_sub` JOIN `categories_article` ON ida = idm_articleTrousers
                            

                            et je cherche un résultat groupé par catégorie

                            +Trousers
                            Simple trouser
                            Combi-trousers
                            Jeans
                            
                            +Dresses
                            Night Dresses
                            Simple dresses
                            Wedding dresses



                            • Partager sur Facebook
                            • Partager sur Twitter

                            Convertir une string an array et la remplir après

                            × 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