如何将数组值转换为变量?

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 列表

如何将哈希值转换为数组

如何使用javascript将字符串数组转换为布尔值? [复制]

如何用js把字符串转化为整型

javascript中如何将获得的整型数值转换为字节数组