2012-04-05 15 views
7

¿Hay una manera de explotar una cadena en variables, por ejemplo,explotar cadena en variables

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

tal que $ min se le asigna el valor 3 y $ max se le asigna el valor 20.

Sé que puede simplemente usar

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

preguntándose si hay otra forma.

Respuesta

17

La construcción de lenguaje de PHP list() puede realizar asignaciones múltiples a variables (o incluso a otras teclas de matriz) asignando una matriz.

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

Sin embargo, todavía se tendría que aplicar una trim() a las variables ya que el valor $max tendría un espacio inicial, o reemplazar explode() con preg_split('/\s*,\s*/', $string) para dividirlo en comas y espacios en blanco circundante.

Nota: Tenga cuidado conlist() para asegurarse de que la matriz que está asignando contiene el mismo número de elementos que tiene list() variables. Se asignan de derecha a izquierda en PHP 5.x, no de izquierda a derecha, por lo que si sobrescribe una variable de la izquierda con su contenido original a la derecha, puede obtener resultados inesperados. Esto se detalla con los ejemplos in the PHP docs.

actualización para PHP 7: PHP 7 cambia el comportamiento orden de asignación de tal manera que list() argumentos se asignan de izquierda a derecha

+0

Técnicamente que es la lengua * * constructo de lista '()'. Pero +1. – DaveRandom

+2

@DaveRandom No dije 'list()' era una función, dije que era _la función de 'lista()'. Sutil, pero aclararé de todos modos :) –

+0

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

Cuestiones relacionadas