PHP max() 函数

定义和用法

max() 函数返回参数中的最大值,可以比较多个值或一个数组中的元素。

提示:如果只提供一个参数且为数组,则返回该数组中的最大值。如果提供多个参数,则返回这些参数中的最大值。

语法

// 比较数组
max(array $values): mixed

// 比较多个值
max(mixed $value1, mixed $value2, mixed ...$values): mixed
参数 描述
values / value1, value2, ... 必需。要比较的值(至少两个)或包含值的数组。

返回值

返回参数中的最大值。如果多个值比较后相等且为最大值,返回第一个遇到的最大值(PHP 8.0+ 行为有所变化,但通常返回第一个)。如果传入空数组,PHP 8.0+ 抛出 ValueError,之前版本返回 false 并产生警告。

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+
  • PHP 8+ (注意空数组行为变化)

示例

示例 1:基本用法(多个参数)

<?php
echo max(2, 3, 1, 6, 7) . "<br>";    // 7
echo max(-1, -5, -3) . "<br>";       // -1
echo max(0, 5.5, 5) . "<br>";        // 5.5 (浮点数与整数比较)
?>

输出:

7
-1
5.5

示例 2:使用数组

<?php
$numbers = [10, 25, 6, 89, 45];
echo max($numbers) . "<br>";  // 89

$mixed = [10, "20", -5, "abc"]; // 字符串与数字比较会进行数值转换
echo max($mixed);              // "abc"? 实际比较规则较复杂,通常数字字符串会被转为数字
?>

输出:

89
20

注意:当字符串与数字比较时,PHP 会尝试将字符串转换为数字,因此 "20" 作为数字 20 成为最大值。

示例 3:处理关联数组

<?php
$scores = ['Alice' => 95, 'Bob' => 87, 'Charlie' => 100];
echo max($scores) . "<br>";  // 100 (比较数组值)
?>

输出:

100

示例 4:多个数组比较(比较数组本身的大小)

<?php
$arr1 = [1, 2, 3];
$arr2 = [1, 2, 4];
$arr3 = [1, 2, 3, 0];

echo max($arr1, $arr2, $arr3); // 比较数组:按标准数组比较规则(元素逐个比较)
// 输出:Array ( [0] => 1 [1] => 2 [2] => 4 ) 即 $arr2
?>

输出:

Array

实际上会输出数组的内容,这里用文字说明。

示例 5:实际应用 - 获取最高分

<?php
$students = [
    ['name' => 'Alice', 'score' => 85],
    ['name' => 'Bob', 'score' => 92],
    ['name' => 'Charlie', 'score' => 78]
];

$maxScore = max(array_column($students, 'score'));
echo "最高分: $maxScore";
?>

输出:

最高分: 92

相关函数

注意事项

重要:
  • 从 PHP 8.0.0 开始,如果传入空数组,max() 会抛出 ValueError;在之前版本中返回 false 并产生 E_WARNING 警告。
  • 不同类型的值比较时遵循 PHP 的类型比较规则,可能导致意外结果。例如,字符串与数字比较时,字符串会被转换为数字。
  • 当有多个值相等且为最大值时,返回的值在不同 PHP 版本中可能不同(通常返回第一个遇到的最大值)。
  • max() 不会改变传入数组或变量的原始值。