Php 如何使用带组合键的字符串从多维数组中获取值?
请看下面的代码,我想在这里获得Php 如何使用带组合键的字符串从多维数组中获取值?,php,arrays,Php,Arrays,请看下面的代码,我想在这里获得$arr['jimmy']['age']。字符串是jimmy.age,将从ajax发布 <?php $arr=array( 'jimmy'=>array( 'age'=>31 ) ); $str='jimmy.age'; $keys_tree=explode('.',$str); $x=''; foreach($keys_tree as $k=>$v){ $x.='["'.$v.'"]'; } ech
$arr['jimmy']['age']
。字符串是jimmy.age
,将从ajax发布
<?php
$arr=array(
'jimmy'=>array(
'age'=>31
)
);
$str='jimmy.age';
$keys_tree=explode('.',$str);
$x='';
foreach($keys_tree as $k=>$v){
$x.='["'.$v.'"]';
}
echo $arr$x; //error here; how can i get $arr['jimmy']['age'] using $arr joining str ['jimmy']['age']
一种方法是遍历数组并使用引用跟踪每个级别:
$str ='jimmy.age';
$keys_tree = explode('.', $str);
$pointer = $arr;
while($key = array_shift($keys_tree)){
if(!isset($pointer[$key]))
throw new Exception(sprintf("Key %s doesn't exist", $key));
$pointer = &$pointer[$key];
}
echo $pointer;
请解释一下你认为的$arr$x
是什么意思。如果在您尝试这样做时,您意识到自己做错了什么,那么删除此问题并没有什么丢脸的。您不能像正在尝试那样做,$x
包含一个看起来像数组符号的字符串。请尝试以下操作:echo$arr.$x@Rohit,它不会像您所说的那样尝试$arr.$x
。它会与eval()
一起工作,但是该函数附加了太多戏剧性的内容