2016-06-18 9 views
0

Hallo,in einer einzigen Zeichenfolge in PHP enthalten mehrere Werte Teilen

ich eine Zeichenfolge wie dieses:

$coord = "1,0 1,8 7,13 7,94"; 

und ich 100 jeweils einen der Werte teilen müssen, so etwas bekommen :

0.01,0 0.01,0.08 0.07,0.13 0.07,0.94 

So habe ich versucht, dieses:

$pair=explode(" ", $coord); 

foreach ($pair as $val) { 
    $sing = explode(",", $val); 
    foreach ($sing as $div) { 
    $res = ($div/100); 
    } 
    $sing_d = implode(",", $res); 
} 

$result = implode(" ", $sing_d); 

print ($result); 

aber ich erhalte eine Fehlermeldung:

Warning: implode(): Invalid arguments passed 

Was ist der einfachste Weg, dies zu tun?

+1

'$ res' ist kein Array, implodieren benötigt ein Array –

+0

analysiert werden Warum wird res $ nicht Array? Es ist in einer foreach. –

+0

Es wäre gewesen, wenn Sie '$ res [] = $ div/100' gesetzt hätten. Beachten Sie die eckigen Klammern. Auch die (runden) Klammern, die Sie einfügen, werden nicht benötigt, noch machen sie das Ergebnis zu einem Array. – trincot

Antwort

3

Sie könnten preg_replace_callback verwenden zu finden und alle Zahlen, die durch ihren Wert geteilt durch 100 zu ersetzen:

$result = preg_replace_callback("/\d+(\.\d+)?/", function ($match) { 
    return $match[0]/100; 
}, $coord); 
+0

Ausgezeichnete Antwort. Ich kannte diese Funktion nicht. Es ist großartig. Vielen Dank. –

Verwandte Themen