首页 > 解决方案 > 如何找到数组中的最小数字并返回该数组的主索引?

问题描述

我有一个如下所示的数组。我想在“diff”索引中找到编号最小的数组。所以在这种情况下,我想取回数组 [7]。我需要的只是数组编号(即 7)而不是任何其他信息。

我知道我可以使用 array_column 轻松找到最小的数字,但我如何也返回 7 的整体数组索引?

[1] => Array
        (
            [qb] => 7
            [rb] => 58
            [wr] => 91
            [te] => 3
            [def] => 11
            [diff] => 136
        )

    [2] => Array
        (
            [qb] => 21
            [rb] => 96
            [wr] => 102
            [te] => 48
            [def] => 15
            [diff] => 240
        )

    [3] => Array
        (
            [qb] => 23
            [rb] => 86
            [wr] => 216
            [te] => 6
            [def] => 32
            [diff] => 287
        )

    [4] => Array
        (
            [qb] => 30
            [rb] => 51
            [wr] => 200
            [te] => 14
            [def] => 17
            [diff] => 266
        )

    [5] => Array
        (
            [qb] => 17
            [rb] => 118
            [wr] => 273
            [te] => 14
            [def] => 30
            [diff] => 380
        )

    [6] => Array
        (
            [qb] => 10
            [rb] => 112
            [wr] => 142
            [te] => 16
            [def] => 4
            [diff] => 264
        )

    [7] => Array
        (
            [qb] => 2
            [rb] => 50
            [wr] => 135
            [te] => 9
            [def] => 20
            [diff] => 104
        )

    [8] => Array
        (
            [qb] => 16
            [rb] => 68
            [wr] => 141
            [te] => 12
            [def] => 1
            [diff] => 224
        )

标签: phparraysmultidimensional-array

解决方案


正如你所说,你可以使用 array_column 和 min()。
然后使用 array_search 找到最小值所在的位置。

//Since the array starts with key 1 then use array_values to reset the array first.
$array = array_values($array);
$diff = array_column($array, "diff");
$min = min($diff);
$key = array_search($min, $diff);

$result = $array[$key];

工作示例:
https ://3v4l.org/ci70K


推荐阅读