Problem mit Arrays

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

  • Problem mit Arrays

    Hallo! Bin noch absoluter Anfänger. Daher ist die Geschichte für mich noch ein wenig kompliziert ^^ Es geht in die Richtung Reservierung.

    Ich hab eine .txt Datei mit 2 Zeilen wie folgt:

    $eintrag1 = array("20.03.2011","19.00","23.00");
    $eintrag2 = array("21.03.2011","19.00","20.00");

    Jetzt möchte ich z.b. nach dem string "21.03.2011" suchen und wenn dieser gefunden wird, dann soll nur in dem selben Array oder Zeile nach einem weiteren Wert gesucht werden... Geht sowas?

    Letztendlich sollen Termine in eine txt Datei geschrieben werden können. Über ein Formular soll man dann einen neuen Termin vereinbaren können, was wiederum nur möglich ist, wenn der Termin (abhängig von Tag und Uhrzeit) noch frei ist (also nicht in meiner txt Datei vorhanden ist).

    Ich hoffe, ich konnte das jetzt verständlich rüberbringen... ^^


    MFG, olli

  • #2
    Lass eine Schleife durchlaufen, indem jedes Array geprüft wird ob dieseser Wert dadrin ist und arbeite dann mit diesem weiter =)

    Ich als Anfänger würde auf diese Funktionen zurückgreifen:
    in_array und
    array_search
    Leute die Angst vor dem Tod haben, sind Menschen die sich an einen Traum im Leben klammern

    Kommentar


    • #3
      jo danke, werds mal probieren... meld mich, wenns geklappt hat

      Kommentar


      • #4
        also ich hab mir jetzt etliche tutorials über arrays und foreach reingezogen, aber irgendwie komme ich hier nicht weiter.

        foreach ($dateiinhalt as $texte) {
        $termine[] = explode("|", $texte);
        }

        echo $termine[0][0]; //ausgabe: 20.03.2011

        soweit funktioniert das. wenn ichs jetzt richtig verstanden habe, sind in $termine[0] meine einzelnen zeilen von der .txt enthalten und in $termine[0][0] der 1. index in der 1. zeile.

        also kann ich somit immer auf den ersten wert von jeder zeile zugreifen. aber wie kann ich nun in allen zeilen (index 1) nach einer zeichenfolge suchen?? kann doch nicht sein, das ich für jede einzelne zeile eine if anweisung schreiben muss !? ^^

        Kommentar


        • #5
          Zitat von olli9000 Beitrag anzeigen
          wenn ichs jetzt richtig verstanden habe, sind in $termine[0] meine einzelnen zeilen von der .txt enthalten und in $termine[0][0] der 1. index in der 1. zeile.
          Nicht raten, Testausgaben mit print_r() machen und nachsehen, ob es so ist.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Zitat von AmicaNoctis Beitrag anzeigen
            Nicht raten, Testausgaben mit print_r() machen und nachsehen, ob es so ist.
            es ist so. aber langsam bin ich mit meinem latein am ende... kann man mit "foreach" jedem index in einem array den gleichen schlüssel geben??

            also z.b.:

            array(
            "key" => wert1
            "key" => wert2
            "key" => wert3
            )

            Kommentar


            • #7
              Kann man, aber nur der letzte gewinnt. Also ist es nicht wirklich sinnvoll. Warum fragst du?
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                also fasse ich nochmal kurz zusammen:

                ich hab eine .txt datei mit dem inhalt:

                20.03.2011|18.00|21.00|1
                22.03.2011|19.00|22.00|2

                in meiner php hab ich bis jetzt:

                $dateiinhalt = file("datum.txt");
                $feld1 = array("20.03.2011","19.00","22.00",1);

                foreach ($dateiinhalt as $texte) {

                list($a, $b, $c, $d) = explode("|", $texte);
                $termine[] = array("Tag" => $a, "Beginn" => $b, "Ende" => $c, "Bahn" => $d);

                }

                jetzt würde ich gerne prüfen, ob $feld1[0] in einer zeile gefunden wird. um jetzt in jeder zeile danach zu suchen, könnte ich ja schreiben:

                //suche in zeile 1
                if($termine[0][0] == $feld1[0]){
                //mach was
                }
                //suche in zeile 2
                if($termine[1][0] == $feld1[0]){
                //mach was
                }

                usw. aber das ist doch quatsch! was mach ich, wenn ich mehrere 100 zeilen hab!? bin ich echt der einzige mit diesem problem?

                Kommentar


                • #9
                  Bitte benutze die Code-Tags!

                  Zu deiner Frage: Genau dafür hat man Schleifen erfunden. Du kannst also einfach dein Array mit foreach durchgehen und innerhalb dieser Schleife deine Prüfung machen. Das geht natürlich auch gleich in der ersten Schleife, mit der du ohnehin die Datei zeilenweise durchackerst.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Zitat von olli9000 Beitrag anzeigen
                    bin ich echt der einzige mit diesem problem?
                    Nein, nur der einzige, der nicht auf die Idee kommt, das in einer Schleife zu machen ...

                    Du hast übrigens schon eine Schleife über die Zeilen, warum baust du das nicht gleich dort mit rein?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      danke für die antworten. leider hab ich absolut keine ahnung, wie ich die bedingung für meine if formulieren soll...

                      Kommentar


                      • #12
                        Na du hast doch die Werte aus der Zeile schon in $a, $b, $c und $d drin. Da sollte es doch jetzt sehr leicht möglich sein, das mit $feld1 zu vergleichen. Entweder blick ich nicht, was dein Problem ist, oder du solltest für heute Schluss machen und morgen weiterarbeiten, wenn du wieder fit bist.
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar


                        • #13
                          PHP-Code:
                          foreach ($dateiinhalt as $texte) {
                          list(
                          $a$b$c$d) = explode("|"$texte);
                          $termine[] = array("Tag" => $a"Beginn" => $b"Ende" => $c"Bahn" => $d);

                          if (
                          in_array($feld1[0], $termine)){
                          echo 
                          "gefunden ";
                          }
                          else
                          {
                          echo 
                          "nicht gefunden ";
                          }

                          ausgabe: nicht gefunden nicht gefunden

                          mache ich da irgendetwas falsch? krass, das für sowas simples nen halber tag draufgeht oder ich bin einfach nur zu dumm ^^

                          Kommentar


                          • #14
                            Argh, wie wäre es denn mal mit sowas?:

                            PHP-Code:
                            if ($feld1[0] == $a) {
                                
                            // ...
                            }
                            // oder
                            if ($feld1[1] == $b) {
                                
                            // ...

                            Ich hab dir schonmal gesagt, du sollst Kontrollausgaben mit print_r machen, damit du siehst was wo drin steht. Wenn du stattdessen einen halben Tag anderen Blödsinn probierst, statt einfach mal ein paar print_r-Ausgaben einzubauen, kann ich dir auch nicht helfen.
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar


                            • #15
                              jo danke, klappt soweit! man, da hätt ich auch echt mal selbst drauf kommen können

                              Kommentar

                              Lädt...
                              X