PHP - Wie String splitten und neu ordnen?

Guten Tag und Hallo zusammen,

als Anfängerin mit PHP und Mysql kämpfe ich seit längeren an folgenden Problem:
Ich bekomme aus einer Datenbank Koordinaten in folgender Form:

11.0683,49.4478,0 11.4422,49.1044,0 12.5858,50.9359,0 …

(Nach jedem „,0“ ist ein Leerzeichen. Der String hat keinen Zeilenumbruch.)

Ich muss aus den Koordinaten ein Polygon mit der Google Maps Api erstellen. Dafür brauche ich die Koordinaten in folgenden Format

new GLatLng(49.4478,11.0683),
new GLatLng(49.1044,11.4422),
new GLatLng(50.9359,12.5858), …

Wie bekomme ich meinen Koordinaten String gesplittet und umgedreht?

Ich hoffe Ihr könnt mir helfen, ich verzweifle langsam an dem Problem.

Danke und Grüße aus Taucha.

Martia

Moin,

als Anfängerin mit PHP und Mysql kämpfe ich seit längeren an
folgenden Problem:
Ich bekomme aus einer Datenbank Koordinaten in folgender Form:

11.0683,49.4478,0 11.4422,49.1044,0 12.5858,50.9359,0 …

(Nach jedem „,0“ ist ein Leerzeichen. Der String hat keinen
Zeilenumbruch.)

Ich muss aus den Koordinaten ein Polygon mit der Google Maps
Api erstellen. Dafür brauche ich die Koordinaten in folgenden
Format

new GLatLng(49.4478,11.0683),
new GLatLng(49.1044,11.4422),
new GLatLng(50.9359,12.5858), …

Wie bekomme ich meinen Koordinaten String gesplittet

Schau ins php manual bei

und
umgedreht?

Letzten als Ersten, Vorletzten als Zweiten,…?
Das mit explode erstellte array mittels for-Schleife von hinten nach vorne auslesen und dabei die werte in ein neues array stopfen.

Ich hoffe Ihr könnt mir helfen, ich verzweifle langsam an dem
Problem.

Dann schaffs ab.

Danke und Grüße aus Taucha.

Martia

Bitte.
widecrypt

Moin, Martia!

  1. Leerzeichen entfernen
    mit substr_replace(), entwerder ’ ’ gegen ‚‘ oder gleich '0 ’ gegen ‚‘.

  2. String teilen
    wie bereits gesagt wurde, mit explode() am Komma.

  3. Nach Längen- und Breitenwert sortieren
    array_shift() entfernt das erste Element aus einem Array und gibt dieses Element zurück.

    while ($derZerlegteString >0){
    $lat[] = array_shift($derZerlegteString);
    $len[] = array_shift($derZerlegteString);
    }

  4. Ausgabe

    while ($lat > 0){
    new GLatLng(array_shift($lat),array_shift($len)),
    }

oder, falls Du die Werte später noch brauchst:

foreach ($lat as $key=\>$l){
new GLatLng($l,$len[$key]), 
}

Das sollte so funktionieren. Falls es eleganter geht, lasse ich mich gerne belehren …

Gruß, Caro

Das sollte so funktionieren. Falls es eleganter geht, lasse
ich mich gerne belehren …

Eleganter vielleicht nicht, aber effektiver (denke ich)

$string = „11.0683,49.4478,0 11.4422,49.1044,0 12.5858,50.9359,0 …“;
$trenner = ",0 ";

$array = explode($trenner,$string);

$trenner2 = „,“;
for ($i=0;$i