string zerlegen

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

  • string zerlegen

    hole mir einen string in folgendem format aus der db:
    g1:1:0|g2:0:100|g3:0:665|usw

    der teil des strings, der durch das erste | abgetrennt ist, soll in einem array gespeichert werden, dass nach dem wert benannt ist, der vor dem 1. doppelpunkt steht. der wert des vor dem 2. doppelpunkt soll dann in dem array gespeichert werden, meinetwegen unter 'vorhanden', der wert nach dem 2. doppelpunkt soll ebenfalls in dem array gespeichert werden, z.b. unter 'bz'.

    es soll also der ganze string durchlaufen werden, und für jeden teil, durch | getrennt, ein neues array erstellt werden und dann die jeweiligen werte wie oben geschrieben in dem array gespeichert werden.

    für hilfe wäre ich dankbar

  • #2
    das sollte die lösung deines problems sein.

    der eingabestring darf NICHT mit pipe '|' enden oder starten. müsstest du evtl. abfangen.

    ich würde dir VARIANTE 1 empfehlen, da diese sich besser im nachfolgendem script von dir wahrscheinlich besser handlen lässt.

    PHP-Code:
    <pre>
    <?php

      
    /* EINGABESTRING */
      
    $string "g1:1:0|g2:0:100|g3:0:665";

      
    $str_arr explode("|"$string);


      
    $i_max=count($str_arr);
      for(
    $i=0;$i<$i_max;$i++) {
        
    $pre_data explode(":",$str_arr[$i]);

        
    /* Variante 1 */
        
    $data1[$pre_data[0]][vorhanden] = $pre_data[1];
        
    $data1[$pre_data[0]][bz]        = $pre_data[2];

        
    /* Variante 2 */
        
    ${$pre_data[0]}[vorhanden] = $pre_data[1];
        ${
    $pre_data[0]}[bz]        = $pre_data[2];
      }


      
    /**********************************/
      /* Ausgabe */

      /* Variante 1 */
      
    print_r($data1);

      
    /* Variante 2 */
      
    print_r($g1);
      
    print_r($g2);
      
    print_r($g3);


    ?>
    </pre>
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      oder auch als funktion. diese variante halte ich für mehrfachverwendung besser ...
      ist aber nur mir VARIANTE 1 vorgesehen.

      PHP-Code:
      <pre>
      <?php

        
      /*************************************************************/
        
      function SplitMyString($inputstring) {
          
      $str_arr explode("|"$inputstring);
          
      $i_max=count($str_arr);
          for(
      $i=0;$i<$i_max;$i++) {
            
      $pre_data explode(":",$str_arr[$i]);
            
      $data1[$pre_data[0]][vorhanden] = $pre_data[1];
            
      $data1[$pre_data[0]][bz]        = $pre_data[2];
          }
          return 
      $data1;
        }
        
      /*************************************************************/

        /* EINGABESTRING */
        
      $string "g1:1:0|g2:0:100|g3:0:665";

        
      /**********************************/
        /* Ausgabe */

        /* Variante 1 als Funktion */
        
      print_r(SplitMyString($string));

      ?>
      </pre>
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        ich vergas.

        wenn dein g1 oder g2 oder g3 mehrfach vorkommen sollte, wird die alte zuweisung überschrieben.
        dein eingabestring muss also schon 'sauber' sein....
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          vielen dank für den umfangreichen code

          ich probiere das gleih mal aus

          Kommentar


          • #6
            @panta: Mach mal Deine Signatur heile ... [ b] auf [ /b] zu ...
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              signatur ist 'geheilt'

              Kommentar


              • #8
                bin kein fan von arrays, da ich der meinung bin, dass sie gegenüber variablen außer ihrer möglichkeit, daten zusammenzufassen, keine weiteren vorteile haben *g*

                noch eine frage und ich bin überglücklich
                wie kann ich aus data1 z.b. 'vorhanden' von 'g1' ausgeben lassen?
                Zuletzt geändert von panta; 04.12.2002, 21:20.

                Kommentar


                • #9

                  PHP-Code:
                  echo $data1[g1][vorhanden]; 
                  der vorteil bei array liegt darin, dass man die inhalte durch schleifen setzen und lesen kann.

                  mache das mal mit herkömmlichen variablen, dann musst du alles von hand machen. kommt eine neue VAR hinzu, musst du wieder dein script ändern.... )



                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    letzter post bezog sich auf die NICHT-funktion variante....

                    hier das mit der funktion....

                    PHP-Code:

                      $data1 
                    SplitMyString($string);

                      
                    /* und dann .... */
                      
                    echo $data1[g1][vorhanden]; 
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      *knuddel*

                      vielen dank )))

                      Kommentar

                      Lädt...
                      X