如何从数组中获取最大值PHP [已关闭]

hjzp0vay  于 2022-10-30  发布在  PHP
关注(0)|答案(2)|浏览(185)

已关闭。此问题需要更多的focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

2天前关闭。
Improve this question
我需要一个PHP代码来从数组中找到最大的数。我有下面的一组数据。我需要从这个数组中找到最大的值。在这个例子中,最大的值是22-221。我该怎么做呢?谢谢。

array:8 [
    0 => null
    1 => "22-115"
    2 => "AAAAAAAAA"
    3 => "22-001"
    4 => "22-221"
    5 => "22-004"
    6 => "22-023"
    7 => "22-002"
  ]

我试过sort(),但它不像预期的那样工作。

7jmck4yq

7jmck4yq1#

usort()函数允许您指定自己的比较机制。在这里,您可以提供一个函数来去除非数字字符,然后比较结果整数。

$array = [
    null,
    "22-115",
    "AAAAAAAAA",
    "22-001",
    "22-221",
    "22-004",
    "22-023",
    "22-002",
];

function compare($a, $b)
{
    $intA = preg_replace('/\D/', '', $a);
    $intB = preg_replace('/\D/', '', $b);
    if ($intA > $intB) {
        return -1;
    }
    if ($intA < $intB) {
        return 1;
    }
    return 0;
}

usort($array, 'compare');
print_r($array);

这将产生:

Array
(
    [0] => 22-221
    [1] => 22-115
    [2] => 22-023
    [3] => 22-004
    [4] => 22-002
    [5] => 22-001
    [6] =>
    [7] => AAAAAAAAA
)

然后你可以只取第一个元素:

$max = $array[0];

或者,内联相同的内容:

usort($array, fn($a, $b) => preg_replace('/\D/', '', $b) <=> preg_replace('/\D/', '', $a));
$max = $array[0];
j8ag8udp

j8ag8udp2#

$array = [
    null,
    "22-115",
    "AAAAAAAAA",
    "22-001",
    "22-221",
    "22-004",
    "22-023",
    "22-002",
];

$max = max(filter_var_array($array, FILTER_SANITIZE_NUMBER_INT));
echo $max;  //22-221

演示:https://3v4l.org/h5LG F

相关问题