【问题标题】:How to turn array values into variables?如何将数组值转换为变量?
【发布时间】:2011-08-12 19:15:06
【问题描述】:

我有两个数组。喜欢:

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

还有第二个:

45, 67, 34, 89, ...

我想将第一个数组中的字符串键变成变量并设置它们相等 到第二个数组中的数字。

有可能吗?

【问题讨论】:

    标签: php arrays string variables key


    【解决方案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_combine
    http://php.net/manual/en/function.extract.php

    虽然我建议您将值保存在数组中,但在命名空间中充斥变量变量并不是一个好主意。

    【讨论】:

    • 比过去必须使用 eval 来解决这类问题的日子好多了。
    • @Wes 这些“过去的日子”有多大? PHP 可以在没有 evil() 的情况下做到这一点,因为它有循环和变量变量...... :)
    • 我想在我知道 extract 之前是 4.3 之前的时代。只是显示我所知道的。 evil()...不错:)
    • @chapagain 两者都不是更好,真的。这些值应该保留在一个数组中...... :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    相关资源
    最近更新 更多