2011-04-26 19 views

Respuesta

25
extract(array_combine($arrayKeys, $arrayValues)); 

http://php.net/array_combine
http://php.net/manual/en/function.extract.php

lo recomiendo a mantener los valores en una matriz sin embargo, rara vez es una buena idea para inundar el espacio de nombres con variables variables.

+0

Mucho mejor que los viejos tiempos cuando solía tener que usar eval para este tipo de problema. – Wes

+0

@Wes ¿Qué edad tienen estos * "viejos días" *? PHP podría hacerlo sin 'evil()' ya que tenía bucles y variables variables ... :) – deceze

+0

Supongo que los viejos tiempos en mi tiempo eran antes de saber sobre 'extract' que era pre 4.3. Solo muestra lo que sé, supongo. 'evil()' ... nice :) – Wes

5

Intente utilizar array_combine: -

<?php 
$a = array('green', 'red', 'yellow'); 
$b = array('avocado', 'apple', 'banana'); 
$c = array_combine($a, $b); 

print_r($c); 
?> 

de salida: -

Array (
    [green] => avocado 
    [red] => apple 
    [yellow] => banana 
    ) 

Bucle a través de esta matriz y crear variable para cada valor de la clave: -

foreach($c as $key => $value) { 
    $$key = $value; 
} 

Ahora, se puede imprima las variables como: -

echo $green." , ".$red." , ".$yellow; 

Espero que esto ayude. Gracias.

+1

Creo que usar la función de extracción es una mejor manera. http://php.net/manual/en/function.extract.php Pero si en el caso, no quieres todos los valores de tu matriz como variables (solo quieres variables de límite) entonces puedes usar mi respuesta. –

+1

Para limitar las variables, iría con 'extract (array_intersect_key ($ c, array_flip (array ('green', 'red'))));'. ;) – deceze

Cuestiones relacionadas