使用数组语法中的字符串访问多维数组

时间:2013-10-11 14:36:44

标签: php arrays multidimensional-array

我有一个名为$ row的数组,如下所示:

[multifield] => Array
(
    [pipelines_users] => Array
    (
        [users_id] => Array
        (
            [0] => 327
            [1] => 123
        )
    )
)

我希望访问users_id数组但只有字符串multifield[pipelines_users][users_id]

但是回显$row[$string]使用整个字符串作为键,并且不解析方括号的数组符号。

我已经尝试过:$row{$string}以及其他一些错误的语法而没有运气。

字符串数组符号将具有可变键,因此我无法在此处进行硬编码。

1 个答案:

答案 0 :(得分:2)

在没有eval的情况下实现此目的的一种方法是将字符串拆分并循环遍历键,检查它们的存在,逐渐缩小数组。

$row = array("multifield" => Array
(
    "pipelines_users" => Array
    (
        "users_id" => Array
        (
            0 => 327
            ,1 => 123
        )
    )
));
$str = 'multifield[pipelines_users][users_id]';
$parts = preg_split('#[[\]]+#',$str);//Convert string into array of keys: ('multifield','pipelines_users','users_id','')
$ret = $row;
foreach($parts as $key)
{
    if(isset($ret[$key])) $ret = $ret[$key];//When the key is found, we push $ret further down the array, for the next key search
}
var_dump($ret); //array(2) { [0]=> int(327) [1]=> int(123) }