1

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

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

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

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

我已经尝试过:$row{$string}以及其他几种不正确的语法,但都没有运气。

字符串数组表示法将有变量键,所以我不能在这里硬编码。

4

1 回答 1

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) } 
于 2013-10-11T14:55:46.913 回答