正如所指出的那样,您有 eval() 选项,并且在适当的情况下,我个人不是 eval 仇恨者。
我只是想建议也许有更好的方法来处理您的问题。
现在我不明白变量 $b 是从哪里来的,但是如果你将它存储为 2 个变量,它似乎对你更有用,然后你可以直接使用它们来访问数组,例如:
$b = 'one';
$c = '1.1';
$a = array(
'one' => array(
'1.1' => 'One point One',
'1.2' => 'One point Two',
),
'two' => array(
'2.1' => 'Two point One',
'2.2' => array(
'2.2.1' => 'Two point Two point One',
),
),
);
echo $a[$b][$c];
如果您无法控制变量 $b,或者您正在使用它来描述变量深度的数组,您可以将其结构简化为“one-1.1”或“one-two-1.1”之类的东西,并将变量解析为您需要的索引。
例如 :
$b = 'one-1.1';
$a = array(
'one' => array(
'1.1' => 'One point One',
'1.2' => 'One point Two',
),
'two' => array(
'2.1' => 'Two point One',
'2.2' => array(
'2.2.1' => 'Two point Two point One',
),
),
);
function resolveArray($path, $array)
{
$indexes = explode('-', $path);
$depth = count($indexes);
$target = $array;
for($i = 0; $i < $depth; $i++)
{
$target = $target[$indexes[$i]];
}
return $target;
}
echo resolveArray($b, $a);
您可以修改上述内容以处理您的问题中描述的路径。