如何从数组中递归获取我需要爆炸键的值? 我知道,这个问题并不好,让我解释一下。
我有一个数组
[
"abc" => "def",
"hij" => [
"klm" => "nop",
"qrs" => [
"tuv" => "wxy"
]
]
]
所以,在函数内部,我传递:
function xget($section) {
return $this->yarray["hij"][$section];
}
但是当我想用这个函数得到tuv
值时,我想把section作为数组,例如:
要获得hij.klm
值(nop
),我会xget('klm')
,但要获得hij.klm.qrs.tuv
,我无法xget(['qrs', 'tuv'])
,因为PHP将$section
视为关键,并不会递归地爆炸它。没有使用某些if
和$section[$i]
?
答案 0 :(得分:0)
function xget($section) {
return $this->yarray["hij"][$section];
}
那个是静态功能吗?
你也可以为这个
做到这一点function xget($section) {
if(isset($this->yarray["hij"][$section])){
return $this->yarray["hij"][$section];
}elseif(isset($this->yarray["hij"]["klm"]["qrs"][$section])){
return $this->yarray["hij"]["klm"]["qrs"][$section];
}
}
只要其中两个之间的密钥名称不相同。
答案 1 :(得分:0)
无论嵌套结构如何,您都可以使用array_walk_recursive查找tuv
的值:
$tuv_val='';
function find_tuv($k,$v)
{
global $tuv_val;
if ($k=='tuv')
$tuv_val=$v;
}
array_walk_recursive($this->yarray,"find_tuv");
echo "the value of 'tuv' is $tuv_val";
答案 2 :(得分:0)
试试我的代码
<?php
$array = array(
'aaa' => 'zxc',
'bbb' => 'asd',
'ccc' => array(
'ddd' => 'qwe',
'eee' => 'tyu',
'fff' => array(
'ggg' => 'uio',
'hhh' => 'hjk',
'iii' => 'bnm',
),
),
);
$find = '';
function xget($key){
$GLOBALS['find'] = $key;
$find = $key;
array_walk_recursive($GLOBALS['array'],'walkingRecursive');
}
function walkingRecursive($value, $key)
{
if ($key==$GLOBALS['find']){
echo $value;
}
}
xget('ggg');
?>