String variabler Hälfte in mehrere Teile teilen und Array erstellen

suedi

Mitglied
Hallo Leute

und schon wieder ich ja......

ich habe hier ein array liegen, das heißt $val , da sind mehrere Strings drin, wobei EIN array folgendes enthält

ANREDE NAME VORNAME

Ich möchte jetzt irgendwie diese 3 Eigenschaften VONEINANDER trennen und jeweils in 3 verschiedene Arrays schreiben........getrennt wird der Inhalt durch ein Lerrzeichen, nur ich weiß nicht wie ich das ganze anstellen soll

danke für eure Hilfe

suedi

edit: ach ja, die Strings sind natürlich variabler Länge, also immer verschiedene namen und vornamen
 
Zuletzt bearbeitet:
also den einzelnen string splittest du mit explode (oder alternativ split)
könnte z.b. so aussehen

$mein_array = explode(" ", $mein_string);

dann würde jedes element den geslitteten teil des strings repräsentieren.
problem an der sache, wenn ich nun Herr Franz Hubert Müller heisse
hättest du folgendes array
0: Herr
1: Franz
2: Hubert
3: Müller

obwohl in dem Falle eigentlich hanz und hubert zusammengehören würden...
hoffe dashilft weiter...

interessant hierbei vielleicht auch eine verknüpfuing mit list()
list($anrede, $vorname, $name,) = explode(" ", $mein_string);


in deine getrennten arrays würdest du dann einfach mit
$anrede[] = $mein_array[0];
$andrede[] = $anrede;

schreiben, je nachdem.
 
Danke für die Hilfe, aber ich habe es folgendermaßen gelöst:


PHP:
list ($anrede $nachname, $Vorname) = split (' ', $val);
               echo "Anrede: $anrede; Nachname: $nachname; Vorname: $Vorname<br/>\n";


Und zwar war statt dem Leerzeichen, ein &nbsp in der textdatei die ich auslesen will drinnen, mein glück:-)

also ich glaube so gehts, muss jetzt halt weiterschauen

Trotzdem Danke
suedi
 
Hätte da auch noch ne Lösung mal sehen was dir da hilft...
PHP:
<?php
$val=array("Anrede1 Name1 Vorname1",
           "Anrede2 Name2 Vorname2",
           "Anrede3 Name3 Vorname3",
           "Anrede4 Name4 Vorname4");
for($i = 0; $i<count($val); $i++) {
  $new_val = explode(" ",$val[$i]);
  $new_val[$i] = array($new_val[0],
                       $new_val[1],
                       $new_val[2]);
echo $new_val[$i][0]."<br>".$new_val[$i][1]."<br>".$new_val[$i][2]."<br><br>";
}
?>
Greetz and bb
cObraOne
 
Also irgendwie geht deine Variante bei mir nicht, vielleicht checke ich es aber auch nicht,

der erste teil bleibt bei mir weg, da $val bereits bei mir ein array ist....

geht trotzdem nicht, KA

danke

suedi
 
Da $val bei dir schon ein Array ist und die Einträge schon drin sind, kannst du den ersten Teil weg lassen - richtig.

Die For-Schlaufe hat ein "count()" drin, welches die Einträge in deinem Array zählt und für jeden Eintrag die Schlaufe durchläuft.
Danach wird jeder einzelne Eintrag deines Arrays mit dem Befehl "explode()" bei den " " (Leerzeichen) auseinander gerissen und so selbst wieder zu einem Array "$new_val" (explode[ergebnis 1], explode[ergebnis 2]...)
Jetzt definieren wir $new_val neu und zwar so, dass $i (= anzahl Schleifendurchgänge) den neuen Array $new_val definiert.

So jetzt haben wir:
$new_val[1] (1.Durchgang) --> mit dem alten Array $new_val gefüllt und zwar für [0] (Anrede), [1] (Name) [2] (Vorname).

Den Echo-Befehl kannst du auch weg lassen, wenn du dies nicht benötigst.


Probier es aus es funktioniert! siehe Hier

Greetz and bb
cObraOne
 
Zurück