Bestimmte Werte aus einem Array lesen

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

  • Bestimmte Werte aus einem Array lesen

    Hallo,

    Ich habe ein Array mit dem Inhalt "a,b,c,d,e,f,g".
    Diese Werte variieren aber nun, sprich es müssen nicht immer alle Werte im Array vorhanden sein. Wie kriege ich es nun hin, in dem Array nach bestimmten Werten zu suchen, diese in einer Variable zu speichern, um sie anschliessend in die db einzutragen?

    mit "in_array" kann ich suchen, aber mehr hab ich bisher nicht gefunden..

    Geht hauptsächlich darum, das die Werte eben variieren, und ich vorher prüfen muss welcher Wert wo ist, damit zb nicht der Wert "e" in der db in die Spalte "e" eingetragen wird.
    Hoffe es ist verständlich..

    Gruss

  • #2
    Hm.. ich hab da einen weg gefunden, aber mal eine Frage,

    $id = array ($id);


    Wieso geht des nich? Die Variable id wird per Formular übergeben etc, ich kann sie mitels echo auch ausgeben, aber sobald ich den Inhalt davon ins Array packen möchte, krieg ich Probleme und er macht nichts..
    Zuletzt geändert von Philbil; 11.02.2005, 04:34.

    Kommentar


    • #3
      Salut

      was möchtest du denn machen ? Nur ein Element an ein bestehendes Array anhängen (falls nicht schon drinnen) ?
      PHP-Code:
      $id = array ($id); 
      Funzt sehr wohl. Mach mal folgendes:
      PHP-Code:
      if(is_array($id)){
      echo 
      'Hat gefunzt';
      }
      else{
      echo 
      'Funzt leider ned';

      Das sollte dir TRUE zurückgeben. Denn array() erstellt ein neues Array. Und wenn dein $id plötzlich vom Typ array ist dann hat deine Anweisung sehr wohl funktioniert. Versuch mal dies:
      PHP-Code:
      $temp = array();
      array_push($temp$id); 
      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Warte mal, ich hab grad gesehen, ich hab ein anderes Problem..

        Die Variable id hat zb folgenden Inhalt:
        Mama, Papa, Opa, Oma

        Da ich mir nicht sicher war, hab ich mal folgendes gemacht:


        $id2 = array (test);
        array_push($id2,"$id");

        Ich hab also ein array initialisiert, und dieses um den wert "$id" erweitert. In "$id" steht ja nun:
        Mama, Papa, Opa, Oma

        Habe das dann mal per echo $id2[0] bzw [1] ausgeben lassen, und festgestellt, das er mir bei "0" "test" ausspuckt, bei "1" "Mama, Papa, Opa, Oma".
        Ich hatte es eigt so gedacht, dass die Namen jeweils als einzelne Werte im array erkannt werden, was sie jedoch nicht tun.
        Was kann ich da tun?

        Kommentar


        • #5
          Salut
          Was kann ich da tun?
          Nicht alle Werte in eine Var sondern für jeden Wert eine eigene Var

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            das werden aber auf Dauer 43 Werte..
            Da die User alle Werte in ein input Feld geben, muss ich sie also mittels explode in einzeil Werte teilen, oder gibts da noch ne andere Möglichkeit..?

            Kommentar


            • #7
              Da die User alle Werte in ein input Feld geben, muss ich sie also mittels explode in einzeil Werte teilen, oder gibts da noch ne andere Möglichkeit..?
              z.B. für jeden Wert ein Feld

              oder sonst wie von dir geschrieben mittels explode() und einem Trenner. Dies gibt dir dann ein array zurück mit einem Wert pro Index.

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Für jeden Wert ein feld.. daran dachte ich auch schon.. allerdings kommt mir da die Faulheit der User wieder in die Quere.. auf Dauer werden die nicht bereit sein, 43 Werte einzeln einzutragen. Also werd ichs per explode schnipseln...

                Kommentar


                • #9
                  Also werd ichs per explode schnipseln...
                  Dann musst du aber sicher sein können, dass immer der gleiche Trenner verwendet wird. Ein User gibt die Werte mit ',' getrennt an, der andere nimmt ' ' und noch ein anderer verwendet '-'.
                  Dann ist nichts mehr mit explode()...
                  Für was brauchst du von einem User auch 43 Werte

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    echt... sag mal die URL, wo dies läuft, damit man das mal nachvollziehen kann.

                    Greez. Ess0r
                    nooby ist besser als gar nicht angangen ;D

                    Kommentar


                    • #11
                      Mach ich gleich/später.

                      Vorher eine Frage. Wenn ich mittels explode was splitten möchte, das vorher aber noch per ereg_replace "formatieren" möchte, wie stell ich es an Leerzeichen zu entfernen? Da gibts einen bestimmten char für oder so, hab mich schon totgesucht, finde aber nichts..

                      Kommentar


                      • #12
                        Damit müsste es gehen

                        http://www.selfphp.info/funktionsref...tr_replace.php

                        Kommentar


                        • #13
                          Jop geht.
                          Aber eine Frage bleibt mir dennoch.
                          Es werden soweit alle Leerzeichen entfernt, bis auf ein paar, warum weiss ich nicht.


                          ..:: Namen ::..
                          7 Müller
                          ..:: Wohnort ::..
                          3 Berlin
                          ..:: Land ::..
                          5 Italien



                          So sieht die eingabe aus, die die User in das input Feld tätigen.
                          Nun möchte ich erstmal eine Suche anstellen, also mit ereg_replace() alles rausformatieren, Zahlen Leerzeilen etc, bis letzendlich nur noch da steht: MüllerBerlinItalien.
                          Nun, da es feste Werte sind, die untereinander also der Position nur variieren, habe ich noch mit ereg_replace jedes Wort mit "Wort|" also einen Platzhalter setzt. Anhand diesen Platzhalters splitte ich es nun mit explode, um anschliessend jeden Wert einzeln in ein Array zu übergeben, in welchem ich überprüfen möchte, an welcher Stelle welcher Wert sitzt.

                          Nun, nachdem ich es soweit formatiert habe, und davon ausgehe das eben nur noch Müller|Berlin|Italien| vorhanden ist, wollte ich es splitten. Mir ist aber aufgefallen, das trotzdem eine Leerzeile vorhanden bleibt. Vor jedem Namen, also so: " Land| Berlin| Italien|"
                          Nun, so wird es auch ins Array übertragen, wenn ich dann nach "Berlin" suche, ist klar das kein Wert gefunden wird, darum versuchte ich mit chop() etc die leerzeilen wegzukriegen, bekomme ich aber nicht und ich weiß nicht warum.. eigt sollte
                          PHP-Code:
                          $Inhalt str_replace(' '''$Inhalt); 
                          ja alle Leerzeilen entfernen. Anscheinend aber ja nicht, oder doch? Wenn ja, wo kommen dann die Leerzeilen vor den Namen immer her?
                          Ich hab die ganze Nacht dran gesessen, finde den Fehler aber einfach nicht.

                          Kommentar


                          • #14
                            zeig mal mehr code

                            Kommentar


                            • #15
                              PHP-Code:
                              //Variable übergeben
                              $Inhalt $HTTP_POST_VARS["Inhalt"];


                              //Schiffsnamen inkl Zeichen entfernen
                              $Inhalt str_replace(' '''$Inhalt);
                              $Inhalt ereg_replace("..::Namen::..","",$Inhalt);
                              $Inhalt ereg_replace("..::Land::..","",$Inhalt);
                              $Inhalt ereg_replace("..::Wohnort::..","",$Inhalt);
                              $Inhalt ereg_replace("..::Alter::..","",$Inhalt);


                              //Zahlen rauslöschen
                              $Inhalt ereg_replace("0","",$Inhalt);
                              $Inhalt ereg_replace("1","",$Inhalt);
                              $Inhalt ereg_replace("2","",$Inhalt);
                              $Inhalt ereg_replace("3","",$Inhalt);
                              $Inhalt ereg_replace("4","",$Inhalt);
                              $Inhalt ereg_replace("5","",$Inhalt);
                              $Inhalt ereg_replace("6","",$Inhalt);
                              $Inhalt ereg_replace("7","",$Inhalt);
                              $Inhalt ereg_replace("8","",$Inhalt);
                              $Inhalt ereg_replace("9","",$Inhalt);


                              //Einfügen der Trennzeichen für späteres Explode
                              $Inhalt ereg_replace("Müller","Müller|",$Inhalt);
                              $Inhalt ereg_replace("Berlin","Berlin|",$Inhalt);
                              $Inhalt ereg_replace("Italien","Italien|",$Inhalt);


                              //explode durchführen
                              $explode explode("|",$Inhalt); 


                              $test $explode[0];
                              $test2 $explode[1];


                              //Array initialisieren
                              $array = array("$test""$test2");

                              /Array 
                              suche starten
                              $such_id 
                              Berlin;
                              $key=array_search($such_id,$array);

                              //Ausgabe
                              echo $key

                              Ist der komplette Code bisher..

                              Kommentar

                              Lädt...
                              X