2011-04-26 177 views
9

我有两个数组。像:如何将数组值变为变量?

Bear, prince, dog, Portugal, Bear, Clown, prince, ...

,第二个:

45, 67, 34, 89, ...

我想将字符串键的第一阵列中到变量并将其设置等于 到数第二阵列中。

可能吗?

回答

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

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

我建议你保留值的数组,虽然,这是很少的变量变量淹没你的命名空间是一个好主意。

+0

比过去你不得不使用eval来解决这类问题要好得多。 – Wes 2011-04-26 06:24:44

+0

@Wes这些*“过去的日子”*的年龄? PHP可以在不使用'evil()'的情况下执行它,因为它有循环和变量变量...... :) – deceze 2011-04-26 06:26:41

+0

我想我的时间过去的日子是在我知道4.3之前的'extract'之前。只是显示我知道我猜的。 '邪恶()'...不错:)使用提取物 – Wes 2011-04-26 06:28:45

5

使用try array_combine: -

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

print_r($c); 
?> 

输出: -

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

遍历数组并为每个键值创建变量: -

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

现在,你可以打印变量,如: -

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

希望这会有所帮助。谢谢。

+1

我认为使用提取功能是更好的方法。 http://php.net/manual/en/function.extract.php但是,如果以防万一,你不希望所有的数组值作为变量(只想限制变量),那么你可以使用我的答案。 – 2011-04-26 06:31:29

+1

对于限制变量,我会'提取(array_intersect_key($ c,array_flip(array('green','red'))));'。 ;) – deceze 2011-04-26 06:34:50