Ergebnis 1 bis 12 von 12

Thema: Arrays "dynamisch" Auslesen

  1. #1
    TP-Moderator Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.811

    Arrays "dynamisch" Auslesen

    Erst mal vorneweg, es handelt sich hier nicht um eine wirkliche Anfrage nach Hilfe (im Sinne das ich darin Probleme hätte), sondern ich versuche gerade nen Bekannten von einer mMn. unnötigen "Auslesetechnik" abzubringen".

    Ich versuche mal den Sachverhalt und die Arbeitsweise des Scripts meines Bekannten zu erklären:

    Das Script beinhaltet ein assoziatives Array. Dieses ist im Script fest definiert. Es wird also nicht im Rahmen des Scriptablaufes irgendwie verändert (also das Daten gelöscht werden, umgeschrieben oder irgendwo hinzugefügt).
    Dieses Array dient nur als vorgefertigter Datenpool anstelle z.B. einer Datenbank.

    Der Schlüssel des Arrays setzt sich aus einer 3stelligen Buchstabenkombination von A-Z zusammen, wobei er aber bei diesem Array maximal 100 Kombinationen braucht.

    Jetzt hat er einen String der Marke
    $alphabet="A|B|C|D[..]"

    Dieses packt er mit Explode in ein Array, daß nun das Alphabet enthält.

    Dieses läßt er nun mittels dreier verschachtelter for-schleifen alle potentiel möglichen 3stelligen Buchstabenkombinationen durchprobieren und wenn im oberen Array zum Key ein Wert vorhanden ist, wird dieser Ausgegeben.
    Dieses klappt bei ihm aber nicht.
    Den genauen Fehler hab ich nicht gesucht, weil ich dieses Lösung für absolut unsinnig halte, weil ich der meinung bin, daß es ausreicht, das Array einfach mit einer foreach-Schleife durchlaufen zu lassen.
    Was deutlich Ressourcen sparen würde, als wenn das Script erst 26^3 Kombinationen ausprobiert (was 17576 Kombinationsmöglichkeiten ergibt, wobei ja nur max. 100 vergeben sind) und sein Script deutlich vereinfachen würde.

    Er meint aber nun, daß das Script auf seine Art "dynamisch" wäre, obwohl die Daten nicht dynamisch manipuliert werden und dazu noch linear ausgegeben werden (es findet also keine dynamische Sortierung der Werte vor).

    Lieg ich da jetzt falsch und seine Lösung ist besser, weil dynamischer, oder redet er da unsinn?

    Danke

    Adromir

    P.S. Das Script poste ich hier mal nicht, weil die Frage hier sozusagen ein Alleingang meiner einer ist..

  2. #2
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Also Permutationen richtig zu coden find ich schon recht kompliziert. Du kommst mit einer schönen Denkaufgabe um die Ecke

    ich hab ein schönes Beispiel gefunden, vielleicht hilft Dir das weiter : http://www.uris.de/test/permutation.php

    Die Methode Deines Bekannten halte ich für den falschen Ansatz, aber das ist nur so aus dem Bauch gesprochen. Da muss man sich schon a bizzli länger mit beschäftigen

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  3. #3
    Guest
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Das ist wirklich Schwachsinn. Die Datenbank ist schlecht strukturiert, damit meine ich nicht das Array, sondern die Indexe, die mit Buchstaben arbeiten und das ist einfach schlimm, weil dadurch keine tiefere Logik möglich ist anhand welcher man lineare Zugriffe ermöglichen könnte.
    Wofür genau wird es denn verwendet? Um welche Art von Datenbank handelt es sich? Das System an sich wäre erstmal interessant, weil ich mir nicht vorstellen kann, sowas selbst zu implementieren.
    PS: Linearer Zugriff ist in diesem Fall nicht zutreffend, linear wäre ein Zugriff mit einem Zahlenindex, ohne Schleifen, direkt.
    Geändert von Strogij (16.04.2005 um 03:19 Uhr)

  4. #4
    TP-Moderator Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.811
    Es geht um eine Charaktererstellung für ein Rollenspiel. Mit diesem System sollen Eigenschaften des Charakters ausgesucht werden.
    Die Keys haben schon des ein System. Die Buchstabenkombination des Keys setzt sich aus den Anfangsbuchstaben der ersten drei Wörter zusammen.
    Also in etwa so:

    $vorteil[AAG] = "Adelige Abstammung Graf";
    $vorteil[AAB] = "Adelige Abstammung Baron";
    $vorteil[AAH] = "Adelige Abstammung Herzog";

    Das Script geht dann in etwa so weiter:
    PHP-Code:
    $alpha="A|B|C|[...]";
    $alphabet=explode("|"$alpha);

    for(
    $x=0;$x<26;$x++) {
    $a=$alphabet[$x];

    for(
    $y=0;$y<26;$y++) {
    $b=$alphabet[$y];
    for(
    $z=0;$z<26;$z++) {
    $c=$alphabet[$z];
    $key="{$a}{$b}{$c}";
    if(
    $vorteil[$key]!= "") echo $vorteil[$key];
    }
    }


  5. #5
    TP-Veteran Avatar von the-architect
    Registriert seit
    Jun 2004
    Ort
    Stuttgart
    Beiträge
    1.397
    wäre es nicht möglich die benutzten kombinationen zu ermitteln und nur diese zu durchlaufen? denn 17476 sinnlose durchläufe müssen doch nicht sein.
    Geändert von the-architect (16.04.2005 um 13:44 Uhr)

  6. #6
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Zitat Zitat von Adromir
    Lieg ich da jetzt falsch und seine Lösung ist besser, weil dynamischer, oder redet er da unsinn?
    Nein, Du liegst nicht falsch.
    Die ineinander verschachtelten Schleifen sind wirklich Blödsinn.
    PHP-Code:
    foreach ($vorteil as $v) { echo "<br>".$v; } 
    Das tuts doch für die Ausgabe vollkommen und schont den Speicher, weil nicht nach nicht existierenden Schlüsseln gesucht werden muss.
    Ich verstehe die Argumentation Deines Freunde nicht.
    Was soll denn an den Schleifen dynamischer sein?
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  7. #7
    TP-Moderator Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.811
    @DSA: Ich versteh auch nicht, was da dynamischer sein sollte. Sinn würde es ja nur machen, wenn er dieses Array dynamisch erstellt und trotzdem einen bestimmten Key geziehlt ansprechen will (wenn er nicht wüsste, wie der Key nun genau aussihet, sondern seine Keyerstellung dynamisch "zurücklaufen " würde).
    Er sagt, daß er es jetzt anders gelöst hat. Aber wie, hat er mir nicht gesagt

  8. #8
    321
    321 ist offline
    TP-Specialist Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    Adromir, ich geb Dir recht, rede ihm das aus!

    So wie Du es schilderst und ich es verstehe, werden IMMER ALLE Einträge ausgegeben!
    Der Alpha-Schlüssel ergibt gerade mal eine implizite Sortierfolge,
    so fern man beim 'Probieren' mit ' a' beginnt und mit 'zz' aufhört.

    Das schaffst aber auch mit einer Text-Datei, einem Explode(), asort() und while()
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  9. #9
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Zitat Zitat von Adromir
    @DSA
    Wer ist denn das?
    Du weisst doch - wer A sagt, muss auch B sagen.

    Wenn Dein Freund Dir nicht sagt wie er es nun gelöst hat, dann ist er offensichtlich nicht an einer Codeoptimierung interessiert. Wenn er den Rest dieses Rollenspiels ähnlich "performant" programmiert, dann wird der Server wohl schnell ausgelastet sein.
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  10. #10
    TP-Supporter Avatar von Weede
    Registriert seit
    Jun 2004
    Beiträge
    379
    Zitat Zitat von DSB
    Wer ist denn das?
    Du weisst doch - wer A sagt, muss auch B sagen.
    glaub da war er wieder zu sehr ins rollenspielthema vertieft
    Ich bin bereit, meinem Schöpfer gegenüberzutreten.
    Ob mein Schöpfer ebenso bereit ist, diese Begegnung über sich ergehen zu lassen, ist eine andere Sache.

  11. #11
    TP-Moderator Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.811
    @Weede: Hast recht. War ne typische freud´sche Fehlleistung. Das Rollenspiel wozu er das programmiert heißt abgekürzt DSA..

    Er hat es jetzt mit einer einfachen foreeach- Schleife gelöst, wie ich es ihm gleich zu anfang geraten habe..

  12. #12
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Zitat Zitat von Adromir
    Er hat es jetzt mit einer einfachen foreeach- Schleife gelöst, wie ich es ihm gleich zu anfang geraten habe..
    Ja, aber ist ihm das denn nun dynamisch genug?

    Scherz...
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51