如何将数组值转换为变量?
Posted
技术标签:
【中文标题】如何将数组值转换为变量?【英文标题】:How to turn array values into variables? 【发布时间】:2011-08-12 19:15:06 【问题描述】:我有两个数组。喜欢:
Bear, prince, dog, Portugal, Bear, Clown, prince, ...
还有第二个:
45, 67, 34, 89, ...
我想将第一个数组中的字符串键变成变量并设置它们相等 到第二个数组中的数字。
有可能吗?
【问题讨论】:
【参考方案1】:尝试使用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;
希望这会有所帮助。谢谢。
【讨论】:
我认为使用提取功能是更好的方法。 php.net/manual/en/function.extract.php 但是,如果您不希望所有数组值都作为变量(只需要限制变量),那么您可以使用我的答案。 为了限制变量,我会选择extract(array_intersect_key($c, array_flip(array('green', 'red'))));
。 ;)【参考方案2】:
extract(array_combine($arrayKeys, $arrayValues));
http://php.net/array_combinehttp://php.net/manual/en/function.extract.php
虽然我建议您将值保存在数组中,但在命名空间中充斥变量变量并不是一个好主意。
【讨论】:
比过去必须使用 eval 来解决这类问题的日子好多了。 @Wes 这些“过去的日子”有多大? PHP 可以在没有evil()
的情况下做到这一点,因为它有循环和变量变量...... :)
我想在我知道 extract
之前是 4.3 之前的时代。只是显示我所知道的。 evil()
...不错:)
@chapagain 两者都不是更好,真的。这些值应该保留在一个数组中...... :)以上是关于如何将数组值转换为变量?的主要内容,如果未能解决你的问题,请参考以下文章
Swig:将成员变量(指向值的指针)转换为 python 列表