【发布时间】:2013-04-25 18:47:24
【问题描述】:
给定一个多维数组或字典$array。
假设$array['foo']['bar']['baz'] = 'something';
除了通过 eval 语句对我来说,还有其他方法可以使用多维索引foo/bar/baz吗? (用例是动态创建索引,即函数不知道 /foo/bar/baz/ 是什么)。
我能想到的唯一方法是:
$item = testGetIndex($array, "'foo']['bar']['baz'");
function testGetIndex($array, $index) {
eval('$item = $array[' . $index . '];');
return $item;
}
注意: 我应该提到我不想搜索这个数组。这是一个奇怪的用例。我被传递了一个非常大的多维数组,而不得不使用像这样的构造是很难看的。
$array[foo][bar]..[baz] 对数组进行修改。
【问题讨论】:
-
不确定我是否完全理解你的问题,但听起来你正在寻找类似
array_search:php.net/manual/en/function.array-search.php的数组搜索 -
eval将脚本与编译语言区分开来,非常适合这种情况;只要您知道自己在做什么(没有未经审查的输入)。手动遍历方法同样有效,但是当您说“进行修改”时,您将需要一种基于引用的遍历方法。 -
@mario 是的,我确实喜欢我简单易懂的 eval 策略,但我被警告不要将 eval 用于任何事情。我希望 PHP 有一个数组函数来为我做这件事:(