在PHP数组中搜索值并获取父键

时间:2019-05-02 02:39:29

标签: php recursion

我不确定为什么,但是在解决此问题的递归时遇到了麻烦。这是一个示例数据结构:

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

我只是放屁,似乎无法形成正确的递归函数。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以仅使用array_searcharray_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!

Demo on 3v4l.org