Ankündigung

Einklappen
Keine Ankündigung bisher.

Sortierung eines Arrays nach ANZAHL Werte

Einklappen

Neue Werbung 2019

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

  • Sortierung eines Arrays nach ANZAHL Werte

    Moin Moin !

    Irgendwie steh ich mal wieder auf'n Schlauch !
    Und zwar will ich ein Array sortieren ...
    Klingt erstmal einfach ... AAAABER:

    Die Sortierung muss nach der ANZAHL der Werte erfolgen.

    Beispiel:

    $meinarray[$name]['seiten'] Zahl
    $meinarray[$name]['besuche'][$datum] Zahl

    Code:
    [1979327997] => Array
            (
                [seiten] => 20
                [besuche] => Array
                    (
                        [05.11.07] => 20
                    )
            )
    
    [1993205320] => Array
            (
                [seiten] => 9
                [besuche] => Array
                    (
                        [04.11.07] => 8
                        [05.11.07] => 1
                    )
            )
    
    [1993780070] => Array
            (
                [seiten] => 2
                [besuche] => Array
                    (
                        [03.11.07] => 1
                        [04.11.07] => 1
                    )
            )
    
    [2096184008] => Array
            (
                [seiten] => 1
                [besuche] => Array
                    (
                        [05.11.07] => 1
                    )
            )
    Das Ergebnis sollte so aussehen:
    [1993205320] (mittels count ergibt sich '2')
    [1993780070] (mittels count ergibt sich '2')
    [1979327997] (mittels count ergibt sich '1')
    [2096184008] (mittels count ergibt sich '1')

    Tja, nur wie binde ich "count(...['besuche'])" in die Sortierung ein ?

    Ich wette, das ist wieder total simpel und ich seh den Wald vor lauter Bäumen nicht ...

    Besten Dank schonmal im voraus !

  • #2
    Ich würds so inetwa machen:
    PHP-Code:

    <?
    foreach($array_alt as $key => $value)
    {
      $array_temp[$key] = count($value["besuche"]);
    }
    arsort($array_temp);
    foreach($array_temp as $key => $value)
    {
      $array_neu[$key] = $array_alt[$key];
    }
    ?>

    Kommentar


    • #3
      Du willst erstens nach den Anzahl Tagen und dann nach der (Gesamt-)Anzahl Besuchen sortieren? Das geht z.B. so:
      PHP-Code:
      <?php
      function sort_anz($a$b){
          
      $res count($b['besuche']) - count($a['besuche']);
          if(
      $res == 0){
              
      $res array_sum($b['besuche']) - array_sum($a['besuche']);
          }
          return 
      $res;
      }

      uasort($ar'sort_anz');
      ?>
      [edit]@nikosch ist natürlich nicht überflüssig, aber stand vorher am falschen Ort[/edit]

      Kommentar


      • #4
        Mahlzeit !

        Besten Dank ihr Beiden !

        Die Syntax von lazydog funktioniert "out-of-the-box" !

        Ich hab's mir jetzt glaub ich schon ca. 15x durchgelesen, aber "begreifen" tu ich's immer noch nicht ...
        Aber was soll's ... es tut was es tun soll ...

        Besten Dank nochmal !

        Kommentar


        • #5
          Zitat von simsalabim
          Die Syntax von lazydog funktioniert "out-of-the-box" !
          Das glaub ich ja eher weniger mit dem überflüssigen ?> drin.
          Zitat von simsalabim
          Ich hab's mir jetzt glaub ich schon ca. 15x durchgelesen, aber "begreifen" tu ich's immer noch nicht ...
          Dazu muß man wissen, dass uasort () selbständig jeweils zwei Array Elemente an die gegebene Funktion übergibt (die in der Funktion dann $a und $b darstellen).

          Kommentar


          • #6
            Zitat von nikosch77
            Das glaub ich ja eher weniger mit dem überflüssigen ?> drin.
            Naja OK, ein klein wenig mitdenken tu ich schon auch ...

            Zitat von nikosch77
            Dazu muß man wissen, dass uasort () selbständig jeweils zwei Array Elemente an die gegebene Funktion übergibt (die in der Funktion dann $a und $b darstellen).
            Aja, dann ergibt das schon mehr Sinn ... Danke !

            Kommentar

            Lädt...
            X