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编辑,以表明这不是数组_搜索的预期用途,而另一个搜索应用于嵌套数组