如何使用来自一个数组的字符串值作为PHP中另一个数组的索引

时间:2014-05-13 19:33:38

标签: php arrays reference associative-array

我将一个字符串拆分成数组,给出了一个定界符。因此,创建的这个新数组将包含 values ,我希望将其用作另一个给定数组的索引

有这样的情况:

// my given array
$array['key1']['key2']['a_given_key']['some_other_given_key'] = 'blablabl';

// the value of my given array
$value = $array['key1']['key2']['a_given_key']['some_other_given_key'];

$string = "key1;key2";
$keys = explode(";", $string);

我想在dinamically(在执行我的PHP脚本期间)调用给定数组的值,但是,使用索引数组$keys的所有值,并在另外附加我给定数组的索引 ['a_given_key']['some_other_given_key']

我希望我已经清楚了 非常感谢。

1 个答案:

答案 0 :(得分:0)

要使其工作,您必须使用引用。下面的代码应该按预期工作:

<?php

    $string = "key1;key2;key3;key4";
    $keys = explode(";", $string);


    $array['key1']['key2']['key3']['key4']['a_given_key']['some_other_given_key'] = 'blablabl';

    $ref = & $array;                               

    for ($i=0, $c = count($keys); $i<$c ; ++$i) {   
        $ref = &$ref[$keys[$i]];       
    }

    echo $ref['a_given_key']['some_other_given_key'];

    $value = $ref['a_given_key']['some_other_given_key'];

    echo $value;


?>

我想在使用引用后添加它,你应该使用:

取消它
unset($ref);

如果你不这样做,以后很多行你会运行$ref = 2;,它会修改你的源数组,所以你必须记住在不再使用它之后取消设置引用。