如何使用字符串作为数组索引路径来检索值? [英] How to use a string as an array index path to retrieve a value?
本文介绍了如何使用字符串作为数组索引路径来检索值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有一个像这样的数组:
Let say I have an array like:
Array
(
[0] => Array
(
[Data] => Array
(
[id] => 1
[title] => Manager
[name] => John Smith
)
)
[1] => Array
(
[Data] => Array
(
[id] => 1
[title] => Clerk
[name] =>
(
[first] => Jane
[last] => Smith
)
)
)
)
我希望能够构建一个函数,我可以将一个字符串传递给该函数,该函数将充当数组索引路径并在不使用 eval()
的情况下返回适当的数组值.这可能吗?
I want to be able to build a function that I can pass a string to that will act as the array index path and return the appropriate array value without using eval()
. Is that possible?
function($indexPath, $arrayToAccess)
{
// $indexPath would be something like [0]['Data']['name'] which would return
// "Manager" or it could be [1]['Data']['name']['first'] which would return
// "Jane" but the amount of array indexes that will be in the index path can
// change, so there might be 3 like the first example, or 4 like the second.
return $arrayToAccess[$indexPath] // <- obviously won't work
}
推荐答案
你可以使用一个数组作为路径(从左到右),然后是一个递归函数:
you might use an array as path (from left to right), then a recursive function:
$indexes = {0, 'Data', 'name'};
function get_value($indexes, $arrayToAccess)
{
if(count($indexes) > 1)
return get_value(array_slice($indexes, 1), $arrayToAccess[$indexes[0]]);
else
return $arrayToAccess[$indexes[0]];
}
这篇关于如何使用字符串作为数组索引路径来检索值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文