2012-04-05 9 views
7

Gibt es einen Weg, um eine Zeichenfolge zu explodieren in Variablen zBexplodieren String in Variable

some_function($min, $max, "3, 20"); 

so dass min $ wird der Wert 3 und $ max ist der Wert 20.

Ich weiß, dass ich zugewiesen zugewiesen kann einfach

$data = explode("3, 20"); 

nur fragen, ob es einen anderen Weg gibt.

Antwort

17

PHPs Sprachkonstrukt list() kann mehrere Zuordnungen zu Variablen (oder sogar anderen Array-Schlüsseln) durchführen, indem ein Array zugewiesen wird.

list($min, $max) = explode(",", "3,20"); 

Allerdings müßten Sie noch ein trim() auf Ihre Variablen anzuwenden, da der $max Wert einen führenden Platz haben würde, oder ersetzt explode() mit preg_split('/\s*,\s*/', $string) es auf Kommas und die umliegenden Leerzeichen zu trennen.

Hinweis: Seien Sie vorsichtig mit list() sicher sein, dass das Array Sie zuweisen die gleiche Anzahl von Elementen enthält als list() Variablen hat. Sie werden in PHP 5.x von rechts nach links zugewiesen, nicht von links nach rechts. Wenn Sie also eine Variable auf der linken Seite mit ihrem ursprünglichen Inhalt auf der rechten Seite überschreiben, erhalten Sie möglicherweise unerwartete Ergebnisse. Dies wird detailliert mit den Beispielen in the PHP docs beschrieben.

Update für PHP 7: PHP 7 ändert sich die Zuweisungsreihenfolge Verhalten, so dass list() Argumente von links nach rechts

+0

Technisch zugeordnet sind, die das * Sprachkonstrukt * von 'Liste ist()'. Aber +1. – DaveRandom

+2

@DaveRandom Ich habe nicht gesagt 'list()' war eine Funktion, ich sagte das ist die Funktion von '' list() '. Subtil, aber ich werde trotzdem klären :) –

+0

Ach, touché ... ;-) – DaveRandom