W3docs

max()

Функция max() в PHP возвращает наибольшее значение из массива или набора аргументов. Синтаксис, сравнение типов и примеры.

Функция PHP max() возвращает наибольшее значение из списка аргументов или из одного массива. Это один из самых удобных способов найти максимум без написания цикла вручную. В этой главе рассматриваются оба стиля вызова, правила сравнения значений разных типов, граничные случаи, с которыми легко ошибиться, и ситуации, когда стоит использовать max() или альтернативу.

Синтаксис

max() принимает два различных варианта вызова:

// Form 1: two or more values
max(mixed $value1, mixed $value2, mixed ...$values): mixed

// Form 2: a single array
max(array $value_array): mixed

В обоих вариантах тип возвращаемого значения совпадает с типом значения, которое «побеждает» в сравнении — передайте целые числа и получите целое число, передайте строки и получите строку.

Поиск наибольшего значения в массиве

Если передать один массив, max() вернёт его наибольший элемент:

php— editable, runs on the server

Это работает и для ассоциативных массивов. Ключи игнорируются; сравниваются только значения, и возвращается значение (не ключ):

<?php
$prices = ["apple" => 1.20, "pear" => 0.95, "mango" => 2.40];

echo max($prices); // 2.4
?>

Сравнение набора значений

Если у вас уже есть отдельные переменные, передайте их напрямую, не создавая массив. Этот вариант принимает любое количество аргументов:

<?php
echo max(10, 42, 7);        // 42
echo "\n";
echo max(3, 9, 9, 1);       // 9 — ties simply return the value
?>

Это удобно для ограничения числа снизу — распространённый приём в пагинации и обработке форм:

<?php
$requestedPage = -3;

// Never let the page number drop below 1
$page = max(1, $requestedPage);

echo $page; // 1
?>

Как max() сравнивает значения

max() использует стандартные правила сравнения PHP, поэтому результат зависит от типов участвующих значений.

  • Числа сравниваются численно: max(2, 10) равно 10.
  • Строки сравниваются лексикографически (с учётом регистра — заглавные буквы сортируются перед строчными): max("apple", "banana", "cherry") возвращает "cherry".
  • Смешанные строки и числа: нечисловая строка считается большей, чем 0 в PHP 8, поэтому max(0, "hello") возвращает "hello". По возможности избегайте смешения типов — правила легко неправильно понять.
  • Массивы сравниваются сначала по длине, затем поэлементно, и массив всегда считается больше скалярного значения.
<?php
// Arrays of equal length: compared element by element
var_dump(max([1, 5], [2, 1]));
// Returns [2, 1] because the first element 2 > 1
?>

Граничные случаи и подводные камни

  • Пустой массив: max([]) выбрасывает ValueError в PHP 8 (в PHP 7 выдавалось предупреждение и возвращался false). Проверяйте входные данные на пустоту перед вызовом.
  • Один не-массивный аргумент недопустим — max(5) вызывает ошибку. Используйте max(5, $other) или max([5]).
  • Значения NAN делают результат ненадёжным; предварительно отфильтруйте их.
  • При равных значениях возвращается первое встреченное, поэтому результат стабилен, но исходный ключ теряется.

Связанные функции

  • min() — зеркальная функция, возвращает наименьшее значение.
  • sort() — сортирует весь массив, когда нужно упорядочить все элементы, а не только крайнее значение.
  • array_sum() — суммирует все элементы массива.
  • count() — подсчитывает элементы; полезно для защиты max() от пустых массивов.

Заключение

max() — это краткий и понятный способ получить наибольшее значение из набора аргументов или массива, а также удобный способ ограничить число снизу (max(1, $n)). Следите за единообразием типов, защищайтесь от пустых массивов в PHP 8 и используйте min(), когда нужен противоположный конец диапазона.

Практика

Практика
Что делает функция max() в PHP?
Что делает функция max() в PHP?
Was this page helpful?