Chris: Osteraufgabe

Hi Forum,
Hi Tom,

auch Dir ein frohes Osterfest...

Deine Osteraufgabe krieg ich einfach nicht geknackt.
Dass da ein Fehler drin versteckt ist, habe ich inzwischen realisieren können, wo der aber steckt, weiß ich nicht. Muss 'was ganz gemeines sein. Ich bitte daher mal das Forum um Hilfe. Du sagst ja immer "Intelligenz ist, aus den Fehlern (Anmerkung von mir: oder dem Wissen davon) Anderer zu lernen"

Unter

http://selfhtml.bitworks.de/artikel_locking/count_visitors.php

gibt es schon lange ein Beispiel eines Besucherzählers.
Unter

http://selfhtml.bitworks.de/artikel_locking/show_visitors.php

kann man sich dann die Zählergebnisse anschauen.

Seit einiger Zeit schon wird beobachtet, dass die Liste nicht mehr als 23 Zeilen anzeigt. Da stimmt also was nicht.

Ich krieg diese Aufgabe nicht gelöst und da ich aus den Logs weiß, dass das Beispiel inzwischen einige tausende Male runtergeladen wurde, haben also nun wahrscheinlich einige diesen Fehler, ohne ihn wirklich bemerkt zu haben.

hätte ich doch nur meine Klappe gehalten *ggg*

Auch Euch allen nochmal Froeh Ostern

Euer Chris

  1. Hello,

    Hi Forum,
    Hi Tom,

    auch Dir ein frohes Osterfest...

    Danke. Dito. Bist Du nachher am Feuer?

    Deine Osteraufgabe krieg ich einfach nicht geknackt.

    Die ist auch wirklich gemein. Gebe ich zu.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  2. gudn tach Chris!

    Seit einiger Zeit schon wird beobachtet, dass die Liste nicht mehr als 23 Zeilen anzeigt. Da stimmt also was nicht.

    23? ahhh! dann isses doch klar! SIE waren es...

    naja, vielleicht liegt's auch einfach an dem
    $_data=array_flip($_data);
    ;-) ist ja nicht bijektiv.

    ich habe die anzahl der zeilen uebrigens auf 24 erhoeht...

    prost
    seth

    1. Hi Seth,

      Seit einiger Zeit schon wird beobachtet, dass die Liste nicht mehr als 23 Zeilen anzeigt. Da stimmt also was nicht.

      23? ahhh! dann isses doch klar! SIE waren es...

      naja, vielleicht liegt's auch einfach an dem
      $_data=array_flip($_data);
      ;-) ist ja nicht bijektiv.

      Danke für den Tipp.
      DAS hätte ich bis Dienstag nicht rausgefunden.
      Nun funktioniert es *freu*

      Ich hatte das bemerkt und prompt die Debug-Aufgabe bekommen ;-)
      Habe da jetzt einfach eine neue Funktion für's Sortieren erstellt. Die ist zwar ein bisschen umständlich, aber eine andere Lösung habe ich nicht gefunden.

      Grüße
      gehe jetzt zum Osterfeuer-Aufschichten

      Chris

      1. gudn tach Chris!

        Habe da jetzt einfach eine neue Funktion für's Sortieren erstellt. Die ist zwar ein bisschen umständlich, aber eine andere Lösung habe ich nicht gefunden.

        ksort($_data);

        prost
        seth

        1. Nochmal Tach Seth,

          Habe da jetzt einfach eine neue Funktion für's Sortieren erstellt. Die ist zwar ein bisschen umständlich, aber eine andere Lösung habe ich nicht gefunden.

          ksort($_data);

          Das kenne ich durchaus, sortiert aber anders, als natsort().
          Und ich habe nun versucht, ein natsort() für die Keys zu bauen.
          Was mir daran nicht gut gefällt, ist, dass das Array zeitweilig dreieinhalb mal im Speicher gehalten werden muss.

          1,0 Original
          2,0 an die Funktion übergebene Kopie
          2,2 Die Keys aus dem Array
          2,4   während der Sortierung nochmal irgendwie
          3,4 das neu aufgebaute Array

          Das würde ich gerne korrigieren. Die Funktion sollte als Prozedur arbeiten mit Referenz-Paramter

          function key_natsort($_data)
          {
            if(!is_array($_data))
            {
              return $_data;
            }

          $_keys = array_keys($_data);
            natsort($_keys);

          $_ret = array();

          foreach ($_keys as $key)
            {
              $_ret[$key] = $_data[$key];
            }

          return $_ret;
          }

          Weil es ohnehin regnet, habe ich ja noch Zeit, die Osteraufgabe anständig zu lösen ;-)) Aber 'ne gute Idee habe ich nicht.

          Der Chris

          1. gudn tach Chris!

            ksort($_data);

            Das kenne ich durchaus, sortiert aber anders, als natsort().

            stimmt, aber auf der verlinkten seite ist auch ein natksort angegeben. das ist jedoch genau das gleiche wie dein bisheriger ansatz.

            'ne gute Idee habe ich nicht.

            wie waer's mit einem selbstgebastelten vergleich via uksort? ist aber evtl. zu lahm.
            (beide moeglichkeiten ungetestet:)

            // erste moeglichkeit:
            uksort($_data, "strnatcmp");

            // zweite moeglichkeit (ist wahrscheinlich noch langsamer)
            function cmp($a, $b){
              if($a==$b) return 0;
              $parts_a = explode('.', $a);
              $parts_b = explode('.', $b);
              // die vier teile als int vergleichen...
            }
            uksort($_data, "cmp");

            prost
            seth