我不确定为什么,但是在解决此问题的递归时遇到了麻烦。这是一个示例数据结构:
Array (
[0] => Array (
[powers] => Array (
[0] => Array (
[power] => Super Strength
[scale] => 8
)
[1] => Array (
[power] => Invisibility
[scale] => 4
)
)
)
)
我需要做的是将数组传递给递归函数,如下所示:
get_parent_key($our_array[0]["powers"], "Super Strength");
,并将返回值作为父数组索引,因此,在这种情况下为0
。如果我要使用相同的功能搜索“隐身”,则返回值为1
。
我只是放屁,似乎无法形成正确的递归函数。有人可以帮忙吗?
答案 0 :(得分:1)
您可以仅使用array_search
和array_column
:
$power = 'SuperStrength';
$key = array_search($power, array_column($our_array[0]["powers"], 'power'));
echo "$key\n";
$power = 'Invisibility';
$key = array_search($power, array_column($our_array[0]["powers"], 'power'));
echo "$key\n";
输出:
0
1
请注意,array_search
如果找不到值,则会返回false
(可以等于0),因此在检查结果时,应使用!== false
来测试是否成功。例如:
$power = 'Flying';
$key = array_search($power, array_column($our_array[0]["powers"], 'power'));
if ($key !== false) echo "$key\n";
else echo "power $power not found!\n";
输出:
power Flying not found!