我有一个名为$ row的数组,如下所示:
[multifield] => Array
(
[pipelines_users] => Array
(
[users_id] => Array
(
[0] => 327
[1] => 123
)
)
)
我希望访问users_id数组但只有字符串multifield[pipelines_users][users_id]
但是回显$row[$string]
使用整个字符串作为键,并且不解析方括号的数组符号。
我已经尝试过:$row{$string}
以及其他一些错误的语法而没有运气。
字符串数组符号将具有可变键,因此我无法在此处进行硬编码。
答案 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) }