任何方式来访问数组元素与变量连接
有无论如何访问数组“$ a”给定一个变量与字符串路径通过数组“$ a”?任何方式来访问数组元素与变量连接
例如:
$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',
),
),
);
echo ${$a.$b};
我试图$ {$一个$ B}和其他一些变化,有什么建议?
不,没有像你想要的内置快捷方式。您可以尝试使用eval()
,但我真的不推荐它
怯懦downwoter头脑发言? – 2013-04-09 19:58:13
+1这是一个合理的答案,为什么有人会投票? – Gavin 2013-04-09 20:18:16
你已经指出了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无法控制,或者你正在使用它来描述可变深度的数组,你可以简化它的结构将类似于“一1.1”或“一个-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);
在你的问题中所述您可以修改上述处理您的路径。
这样做的原因是什么? – bestprogrammerintheworld 2013-04-09 19:55:08
我需要在应用程序中使用它,但找到了另一种/更好的方法。但我仍然好奇。这是像未设置($ a。$ b); 只需使用&$ var作为参考,并以此方式完成即可。 – Jim 2013-04-09 20:06:00