如何获得多维数组的名称?

时间:2019-03-25 08:50:58

标签: php arrays

一旦找到特定值,我就会尝试获取数组的名称。

具体来说,我希望获取数组中某个键的最高和最低值,一旦有了这些值,我就需要获取保存这些值的数组的名称。

我的数组看起来像这样-

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”。我不知道该怎么做,任何帮助将不胜感激!

4 个答案:

答案 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_reducemax本身是一个数组归约操作,它接受一个数组并返回一个值,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);

https://3v4l.org/Q9gOX


或者,您可以像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);