Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fusionner plusieurs tableaux contenu dan un seul

Sujet résolu
    27 janvier 2023 à 16:17:20

    Bonjour,

    J'ai un tableau php contenant plusieurs tableaux de dates :

    [["2023-02-04","2023-02-05"],["2022-06-18","2022-06-19","2022-06-20","2022-06-21","2022-06-22"]]

    J'aimerai avoir un seul tableau avec toutes les dates:

    ["2023-02-04","2023-02-05","2022-06-18","2022-06-19","2022-06-20","2022-06-21","2022-06-22"]

    Je bloque sur ce simple problème depuis hier!

    Auriez-vous une piste ?

    Merci par avance



    -
    Edité par AlexandreBERTRAND5 27 janvier 2023 à 16:32:02

    • Partager sur Facebook
    • Partager sur Twitter
      27 janvier 2023 à 16:46:18

      Bonjour,

      Je proposerai d'utiliser la fonction array_merge : https://www.php.net/manual/en/function.array-merge.php

      Il faudrait peut-être aussi savoir comment est obtenu le tableau de départ car peut-être au lieu de vouloir le ré-écrire c'est peut-être plus simple de le faire comme attendu du 1er coup.

      A+

      • Partager sur Facebook
      • Partager sur Twitter
        27 janvier 2023 à 16:53:51

        Bonjour,

        Merci pour te réponse.

        J'avais essayé avec array_merge mais sans succès.

        Le code pour obtenir ce résultat (une boucle dans une boucle) :

           $rentRoom =   $emplacementRepo->listeChoiceRoomRent($id);
         
              $tableau = [];
         $datesDisablest = [];
              foreach($rentRoom as $rent){
         $datedebut = $rent['emplacement_start'];
         $datefin = $rent['emplacement_end'];
        
               $debut_jour = $datedebut->format('d');
            $debut_mois = $datedebut->format('m');
            $debut_annee = $datedebut->format('Y');
        
            $fin_jour = $datefin->format('d');
            $fin_mois = $datefin->format('m');
            $fin_annee = $datefin->format('Y');
        
           $debut_date = mktime(0, 0, 0, $debut_mois, $debut_jour, $debut_annee);
           $fin_date = mktime(0, 0, 0, $fin_mois, $fin_jour, $fin_annee);
        
            for($i = $debut_date; $i <= $fin_date; $i+=86400)
            {
              $datesDisablest +=  date("Y-m-d",$i);
           //  $datesDisable = $this->json(['datesDisable' => date("l, F d Y.",$i)."<br />"], 200);
              }
         array_push($tableau, $datesDisablest);
            
         
            }
        return $tableau; 



        -
        Edité par AlexandreBERTRAND5 27 janvier 2023 à 16:54:33

        • Partager sur Facebook
        • Partager sur Twitter
          27 janvier 2023 à 17:30:59

          Bonjour, comme array_push accepte une liste de paramètres tu dois pouvoir utiliser le spread pour directement "éclater" le tableau au moment où tu le pousses.

          array_push($tableau, ...$datesDisablest);

          Pour que cette syntaxe fonctionne il faut une version de PHP supérieur ou égal à la 7.4

          voir: PHP: rfc:spread_operator_for_array

          • Partager sur Facebook
          • Partager sur Twitter

          suggestion de présentation.

            27 janvier 2023 à 18:07:25

            Il me semble qu'au lieu de faire un second tableau dans la seconde boucle puis de vouloir le réintégrer il serait plus judicieux d'ajouter les éléments dans le premier tableau.

            Par ailleurs un tableau associatif ne serait-il pas plus parlant ?

            A+

            • Partager sur Facebook
            • Partager sur Twitter
              30 janvier 2023 à 16:01:37

              Bonjour,

              Merci pour vos réponse.

              Finalement, ce tableau étant destiné à une datepicker via json, il suffit d'utiliser tableau.flat en javacript.

              • Partager sur Facebook
              • Partager sur Twitter
                31 janvier 2023 à 11:22:59

                Salut

                Plutôt que de faire des manipulations qui demandent d'éclater les objets DateTimeInterface en jour, mois, année pour ensuite avoir les secondes (ce qui risque de poser problème avec les changements d'heure) pour finalement les remettre sous forme de chaînes de caractères, je conseillerais d'utiliser la classe DatePeriod. Pour le formatage avant envoi, on n'évite pas la boucle

                • Partager sur Facebook
                • Partager sur Twitter
                  2 février 2023 à 10:03:52

                  Salut Ymox,

                  Merci pour ta réponse, ça marche  !

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Fusionner plusieurs tableaux contenu dan un seul

                  × 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