一旦找到特定值,我就会尝试获取数组的名称。
具体来说,我希望获取数组中某个键的最高和最低值,一旦有了这些值,我就需要获取保存这些值的数组的名称。
我的数组看起来像这样-
Array
(
[123456] => Array
(
[value1] => 0.524
[value2] => 0.898
[value3] => -6.543
)
[246810] => Array
(
[value1] => 0.579
[value2] => 0.989
[value3] => -5.035
)
我已使用此代码获得了最大值-
max(array_column($statsArr, 'value1'));
正确地,这给了我值“ 0.579”。现在,我需要获取保存此信息的数组的值,因此在这种情况下,我还想获取值“ 246810”。我不知道该怎么做,任何帮助将不胜感激!
答案 0 :(得分:2)
使用简单的foreach
遍历数组并保存所需的密钥:
$max = 0;
$founded_key = false;
foreach ($array as $key => $value) {
if ($max < $value['value1']) {
$max = $value['value1'];
$founded_key = $key;
}
}
echo $founded_key, ' - ', $max;
答案 1 :(得分:1)
对于这些类型的问题,我喜欢使用array_reduce
。 max
本身是一个数组归约操作,它接受一个数组并返回一个值,PHP出于方便起见就提供了开箱即用的功能,因为这是非常常见的操作。
这是示例代码:
$array = array(
123456 => array(
'value1' => 0.524,
'value2' => 0.898,
'value3' => -6.543
),
246810 => array(
'value1' => 0.579,
'value2' => 0.989,
'value3' => -5.035
)
);
$maxKey = array_reduce(array_keys($array), function ($carry, $key) use ($array) {
if ($carry === null) {
return $key;
}
return $array[$key]['value1'] > $array[$carry]['value1'] ? $key : $carry;
}, null);
$maxValue = $array[$maxKey]['value1'];
工作示例:http://sandbox.onlinephpfunctions.com/code/ecd400ffec91a6436c2fb5ee0410658e22772d4b
答案 2 :(得分:0)
function getMax($array, $field) {
$maxValue = null;
$maxKey = null;
foreach($array as $key => $content) {
if (is_null($maxValue) || $content[$field] > $maxValue) {
$maxValue = $content[$field];
$maxKey = $key;
}
}
return [$maxValue, $maxKey];
}
答案 3 :(得分:0)
您可以在array_column中搜索最大值。
我首先通过结合使用正确的键来准备array_column,然后像您一样找到最大值。
然后我们可以array_search值。
$value1 = array_combine(array_keys($statsArr), array_column($statsArr, 'value1'));
$max = max($value1);
echo $max . PHP_EOL;
$array = $statsArr[array_search($max, $value1)];
var_dump($array);
或者,您可以像array_column一样,将$ statsArr的array_values设置为0索引。
$value1 = array_column($statsArr, 'value1');
$max = max($value1);
echo $max . PHP_EOL;
$array = array_values($statsArr)[array_search($max, $value1)];
var_dump($array);