Php 为什么此数组_搜索返回0

Php 为什么此数组_搜索返回0,php,arrays,Php,Arrays,考虑以下几点: $characterStats = [ ['strength' => 500], ['dexterity' => 200], ['agility' => 1000], ['intelligence' => 1200], ['health' => 675], ]; $stat = array_search(max($

考虑以下几点:

$characterStats = [
            ['strength' => 500],
            ['dexterity' => 200],
            ['agility' => 1000],
            ['intelligence' => 1200],
            ['health' => 675],
        ];

$stat = array_search(max($characterStats), $characterStats);

echo $stat;
  • 我的期望:
    ['intelligence'=>1200]
  • 我得到的:0
有人能帮我实现我想要的吗

尝试以下操作:

 $characterStats = array(
            'strength' => 500,
            'dexterity' => 200,
            'agility' => 1000,
            'intelligence' => 1200,
            'health' => 675,
        );

$stat = array_search(max($characterStats), $characterStats);

echo $stat;
我更改了数组的声明方式。我相信,如果在以下调用中使用嵌套数组,您可能需要指明要搜索的字段名:

$stat = array_search(max($characterStats), array_column($characterStats, 'KEYNAME'));
但是,由于每个子数组只有一个元素具有不同的“键”,因此可能不是最佳方法。对于您的场景,您可能需要使用另一种方法,即循环遍历每个元素并存储找到的最大值。

尝试以下方法:

 $characterStats = array(
            'strength' => 500,
            'dexterity' => 200,
            'agility' => 1000,
            'intelligence' => 1200,
            'health' => 675,
        );

$stat = array_search(max($characterStats), $characterStats);

echo $stat;
我更改了数组的声明方式。我相信,如果在以下调用中使用嵌套数组,您可能需要指明要搜索的字段名:

$stat = array_search(max($characterStats), array_column($characterStats, 'KEYNAME'));

但是,由于每个子数组只有一个元素具有不同的“键”,因此可能不是最佳方法。对于您的场景,您可能需要使用另一种方法,在其中循环遍历每个元素并存储找到的最大值。

使用当前的数组,我可以想到的最简单的方法是将其作为标准的
foreach()
,并保留最大值以及找到它的元素(保存进行另一次搜索以获取完整条目)


使用当前的数组,我可以想到的最简单的方法是将其作为标准的
foreach()
,并保留最大值以及找到它的元素(保存进行另一次搜索以获得完整条目)


您确定需要将其作为多维数组(导致问题的BTW)?您可能需要检查,因为在这种情况下,您的数组是“不可压缩的”。您确定需要将其作为多维数组(导致问题的BTW)?您可能需要检查,因为您的数组是“不可压缩的”在这种情况下。预期输出为['intelligence'=>1200],这只返回intelligenceI编辑以表明这不是数组_搜索的预期用途,另一个搜索应用于嵌套数组预期输出为['intelligence'=>1200],这仅返回intelligenceI编辑,以表明这不是数组_搜索的预期用途,而另一个搜索应用于嵌套数组