Ankündigung

Einklappen
Keine Ankündigung bisher.

Array Auswertung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array Auswertung

    Hallo Leute,

    ich wende mich mit einem Problem an euch wo ich einfach nicht weiterkomme.

    Ich habe zwei Arrays die Öffnungszeiten beinhalten.

    Array
    (
    [moFrom] => 17:00
    [diFrom] => 17:00
    [miFrom] => 17:00
    [doFrom] => 17:00
    [frFrom] => 17:00
    [saFrom] => 12:00
    [soFrom] => 12:00
    )

    Array
    (
    [moTo] => 22:00
    [diTo] => 22:00
    [miTo] => 22:00
    [doTo] => 22:00
    [frTo] => 01:00
    [saTo] => 00:00
    [soTo] => 22:00
    )

    Es soll jetzt aus diesen beiden Arrays eine Anzeige generiert werden, die in etwa wie folgt ausschaut.

    Mo - Do 17:00 - 22:00
    Fr 17:00 - 01:00
    Sa 12:00 - 00:00
    So 12:00 - 22:00

    Ich stehe nun schon seit Tagen auf dem Schlauch wie ich diese Anzeige am besten aus den Arrays heraus extrahiere.
    Hat von euch schon mal jemand das gleiche Problem gehabt?
    Wenn ja wie habt ihr das gelöst oder wenn nein, wie kann man sowas am besten umsetzen.

    Ich steh echt auf dem Schlauch.
    Vielleicht verbeiße ich mich auch in meinen bisherigen Gedankengängen aber ich komm einfach nicht weiter.
    Für konstruktive Anregungen wäre ich sehr dankbar.

    LG Mad


  • #2
    Wo ist das auch nur ansatzweise fortgeschritten?

    PHP-Code:
    <?php
    $from 
    = [
        
    'mo' => '17:00',
        
    'di' => '17:00',
        
    'mi' => '17:00',
        
    'do' => '17:00',
        
    'fr' => '17:00',
        
    'sa' => '12:00',
        
    'so' => '12:00',
    ];

    $to = [
        
    'mo' => '22:00',
        
    'di' => '22:00',
        
    'mi' => '22:00',
        
    'do' => '22:00',
        
    'fr' => '01:00',
        
    'sa' => '00:00',
        
    'so' => '22:00',
    ];

    $groups = array();
    foreach([
    'mo''di''mi''do''fr''sa''so'] as $day) {
        
    $key "{$from[$day]} - {$to[$day]}";
        if(!
    array_key_exists($key$groups)) {
            
    $groups[$key] = [];
        }
        
    $groups[$key][] = $day;
    }

    foreach(
    $groups as $range => $days) {
        
    printf("%s: %s\n"join(', '$days), $range);
    }
    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    Kommentar


    • #3
      Zitat von rkr Beitrag anzeigen
      Wo ist das auch nur ansatzweise fortgeschritten?

      PHP-Code:
      <?php
      $from 
      = [
          
      'mo' => '17:00',
          
      'di' => '17:00',
          
      'mi' => '17:00',
          
      'do' => '17:00',
          
      'fr' => '17:00',
          
      'sa' => '12:00',
          
      'so' => '12:00',
      ];

      $to = [
          
      'mo' => '22:00',
          
      'di' => '22:00',
          
      'mi' => '22:00',
          
      'do' => '22:00',
          
      'fr' => '01:00',
          
      'sa' => '00:00',
          
      'so' => '22:00',
      ];

      $groups = array();
      foreach([
      'mo''di''mi''do''fr''sa''so'] as $day) {
          
      $key "{$from[$day]} - {$to[$day]}";
          if(!
      array_key_exists($key$groups)) {
              
      $groups[$key] = [];
          }
          
      $groups[$key][] = $day;
      }

      foreach(
      $groups as $range => $days) {
          
      printf("%s: %s\n"join(', '$days), $range);
      }
      Danke für die schnelle Antwort.
      Ich habe das gleich mal getestet.
      Mal ganz davon abgesehen das es so, ohne einige Umstellungen bei mir nicht lauffähig ist, vermisse ich hier den Vergleich mit den Uhrzeiten.

      Die Ausgabe deines Scriptes ist: "mo, di, mi, do, fr, sa, so: -"
      Geht also leider an meiner Frage vorbei.
      Aber ich werde versuchen darauf aufzubauen.

      P.S. daher habe ich das hier im fortgeschrittenen Channel gepostet, weil das nicht ganz so einfach zu bewerkstelligen ist.

      Hier mal die Umstellung des Scriptes:

      PHP-Code:

                  $groups 
      = array(); 
                  
      $tag = array('mo''di''mi''do''fr''sa''so');
                  foreach(
      $tag as $day) { 
                      
      $key "{$from[$day]} - {$to[$day]}"
                      if(!
      array_key_exists($key$groups)) { 
                              
      $groups[$key] = ""
                      } 
                      
      $groups[$key][] = $day
                  } 
                  
      var_dump($groups);
                  foreach(
      $groups as $range => $days) { 
                      
      printf("%s: %s\n"join(', '$days), $range); 
                  } 
      Aber danke trotzdem.
      Mad

      Kommentar


      • #4
        Wenn du n fertiges funktionierendes Script willst, dann brauchst du das Forum "Scriptbörse". Und dann solltest du entsprechend zu zahlen bereit sein. In den sonstigen Foren wird nur hilfe zur selbsthilfe geliefert, die du bekommen hast und auf die du jetzt aufbauen kannst.
        Zitat von derwunner
        "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

        Kommentar


        • #5
          Zitat von CrocoBlack Beitrag anzeigen
          Wenn du n fertiges funktionierendes Script willst, dann brauchst du das Forum "Scriptbörse". Und dann solltest du entsprechend zu zahlen bereit sein. In den sonstigen Foren wird nur hilfe zur selbsthilfe geliefert, die du bekommen hast und auf die du jetzt aufbauen kannst.
          Das hab ich schon verstanden....
          Daher ja auch mein Satz 'Aber ich werde versuchen darauf aufzubauen.'

          Kommentar


          • #6
            Zitat von madmix Beitrag anzeigen
            Ich habe das gleich mal getestet.
            Wirklich? Ich auch.

            Zitat von madmix Beitrag anzeigen
            Mal ganz davon abgesehen das es so, ohne einige Umstellungen bei mir nicht lauffähig ist, vermisse ich hier den Vergleich mit den Uhrzeiten.
            Der Vergleich mit den Uhrzeiten wird ganz geschickt durch die speziellen Schlüssel realisiert.

            Zitat von madmix Beitrag anzeigen
            Die Ausgabe deines Scriptes ist: "mo, di, mi, do, fr, sa, so: -"
            Nö. rkr's script lifert bei mir:
            mo, di, mi, do: 17:00 - 22:00 fr: 17:00 - 01:00 sa: 12:00 - 00:00 so: 12:00 - 22:00
            PHP-Klassen auf github

            Kommentar


            • #7
              Zitat von jspit Beitrag anzeigen
              Wirklich? Ich auch.
              Vielleicht PHP < 5.4?
              Standards - Best Practices - AwesomePHP - Guideline für WebApps

              Kommentar


              • #8
                Zitat von jspit Beitrag anzeigen
                Wirklich? Ich auch.


                Der Vergleich mit den Uhrzeiten wird ganz geschickt durch die speziellen Schlüssel realisiert.



                Nö. rkr's script lifert bei mir:
                mo, di, mi, do: 17:00 - 22:00 fr: 17:00 - 01:00 sa: 12:00 - 00:00 so: 12:00 - 22:00
                Getestet habe ich schon, ohne die Umstellungen die ich eingangs erwähnte bekomme ich ParseError beim ersten foreach sowie in der If-Abfrage.

                Parse error: syntax error, unexpected '[' in /var/www/web410/html/test.php on line 27

                Aber es lag auch nach der Umstellung eindeutig an meinem Arrays weshalb es nicht funzte.

                Ich ruf die aus der DB ab und habe leider festgestellt das sie nicht so erstellt werden wie es rkr's script vorgibt.

                Nun geht es aber...tausend Dank nochmal und nix für Ungut.

                Kommentar


                • #9
                  Zitat von rkr Beitrag anzeigen
                  Vielleicht PHP < 5.4?
                  Jo leider nur 5.3.18 auf dem Server installiert.

                  Kommentar


                  • #10
                    Die "Umstellung des Scriptes" unter Benutzung der alt hergebrachten Arraydefinitionen (Sonst 1:1) funktioniert auch unter V5.3.8.
                    Noch ältere PHP-Versionen gehören wirklich in die Tonne.

                    Edit: Hat sich ja erledigt.
                    PHP-Klassen auf github

                    Kommentar


                    • #11
                      Zitat von jspit Beitrag anzeigen
                      Die "Umstellung des Scriptes" unter Benutzung der alt hergebrachten Arraydefinitionen (Sonst 1:1) funktioniert auch unter V5.3.8.
                      Noch ältere PHP-Versionen gehören wirklich in die Tonne.

                      Edit: Hat sich ja erledigt.
                      Jo, und Danke nochmal für die schnelle Hilfe an euch alle.

                      Kommentar

                      Lädt...
                      X