2014-05-13 43 views
-1

我已经将一个字符串分割成数组,并给出了一个分隔符。所以,这个新的阵列创建,将包含,我想为索引使用另一个给定的阵列。如何使用一个数组中的字符串值作为PHP中另一个数组的索引

有这样的情况:

// 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']

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

+0

你想建立一个嵌套级别由'$ keys'的长度动态决定的数组吗? –

+0

向我们展示您的代码 - 您是如何试图实现您想要的 –

+0

我拥有'$钥匙'。我想在'$ array'中使用所有这些值作为索引来调用'$ array'中的特定值。 –

回答

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;它会修改你的源数组,所以你必须记住在不再使用的时候引用未设置的引用。

+0

你做了什么,这正是我所期待的!谢谢! :) –

相关问题