Вконтакте Facebook Twitter Лента RSS

Min - Находит наименьшее значение. Min - Находит наименьшее значение Находим наибольшее и наименьшее значение одномерного массива на PHP

(PHP 4, PHP 5, PHP 7)

min — Находит наименьшее значение

Описание

Если в качестве аргументов передан только один - массив чисел, min() возвращает наименьшее из них. Если первый аргумент - integer или float, то обязательно должен быть хотя бы ещё один. В этом случае функция min() вернёт наименьшее из них.

Замечание :

Значения разных типов сравниваются с использованием стандартных правил сравнения . Например, не числовая строка (string ) будет сравниваться с целым числом (integer ) как будто она равна 0 , но несколько строк (string ) будут сравниваться по алфавиту. Возвращаемое значение сохранит первоначальный тип переменной, без преобразования.

Возвращаемые значения

Функция min() возвращает значение того параметра, который считается "самым маленьким" согласно стандартным правилам сравнения. Если несколько значений разного типа равны между собой (т.е. 0 и "abc" ), то будет возвращен первый из них.

Примеры

Пример #1 Пример использования min()

echo min (2 , 3 , 1 , 6 , 7 ); // 1
echo min (array(2 , 4 , 5 )); // 2

// Строка "hello", при сравнении с int, рассматривается как 0
// Так как оба значения равны, то порядок параметров определяет результат
echo min (0 , "hello" ); // 0
echo min ("hello" , 0 ); // hello

// Здесь мы сравниваем -1 < 0, поэтому -1 является наименьшим значением
echo min ("hello" , - 1 ); // -1

// При сравнении массивов разной длины, min вернет менее длинный
$val = min (array(2 , 2 , 2 ), array(1 , 1 , 1 , 1 )); // array(2, 2, 2)

// Несколько массивов одинаковой длины сравниваются слева направо
// для этого примера: 2 == 2, но 4 < 5
$val = min (array(2 , 4 , 8 ), array(2 , 5 , 1 )); // array(2, 4, 8)

// Если сравниваются массив и не-массив, то массив никогда не будет возвращен
// так как массивы считаются большими чем все остальные значения
$val = min ("string" , array(2 , 5 , 7 ), 42 ); // string

// Если один аргумент является NULL или булевым, то он будет сравниваться с остальными
// с использованием правило FALSE < TRUE, учитывая остальные типы аргументов
// В приведенном примере -10 и 10 рассматриваются как TRUE
$val = min (- 10 , FALSE , 10 ); // FALSE
$val = min (- 10 , NULL , 10 ); // NULL

// с другой стороны, 0 рассматривается как FALSE, поэтому это "меньше" чем TRUE
$val = min (0 , TRUE ); // 0
?>

У меня есть массив в этом формате:

Array ( => Array ( => 117 => Networking => 16) => Array ( => 188 => FTP => 23) => Array ( => 189 => Internet => 48))

Есть ли хороший способ получить минимальные и максимальные значения «count»? Я мог бы сделать это, используя несколько циклов, но я думал, что может быть лучший способ.

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

НАЧАТЬ ИЗОБРАЖЕНИЕ

Причина, по которой использование min() и max() видимому, дает правильный ответ, относится к массивам типа-casting к целым числам, которые являются неопределенным поведением:

Поведение преобразования в integer не определено для других типов. Не полагайтесь на какое-либо наблюдаемое поведение, так как оно может меняться без предупреждения.

Мое высказывание выше о типе-литье было неправильным. Фактически min() и max() работают с массивами, но не в том, как OP нуждается в их работе. При использовании min() и max() с несколькими массивами или массивом элементов массивов сравниваются элементы по элементу слева направо:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) /* * first element compared to first element: 2 == 2 * second element compared to second element: 4 < 5 * first array is considered the min and is returned */

Переведенный в проблему ОП показывает, почему прямое использование min() и max() видимому, дает правильный результат. Первые элементы массива – это id , поэтому min() и max() сначала сравнивают их, кстати, приводят к правильному результату, потому что самый низкий id – тот, у которого самый низкий count а самый высокий id – тот, который имеет максимально высокий count .

END EDIT

Правильный способ – использовать цикл.

$a = array(array("id" => 117, "name" => "Networking", "count" => 16), array("id" => 188, "name" => "FTP", "count" => 23), array("id" => 189, "name" => "Internet", "count" => 48)); $min = PHP_INT_MAX; $max = 0; foreach ($a as $i) { $min = min($min, $i["count"]); $max = max($max, $i["count"]); }

Вы можете использовать функции max () и min () .

Что вы сделали с несколькими циклами? Одного вполне достаточно 🙂

  1. Получите первый элемент, подсчитав счет как $ min, так и max
  2. итерации по остальным, сравните счетчик с каждым $ min и $ max, если меньше / больше, назначьте новое значение счета

Вы можете использовать функции max / min поскольку они возвратят массив, содержащий максимум / минимум каждого индекса. Ваш пример должен возвращать array(189, "Networking ", 48) для max . Затем вы можете захватить счет из этого массива.

Обновление этого не работает, как я исключал. Пример справочной страницы вводит в заблуждение, а пример дает правильный результат с использованием max, но это просто совпадение.

Похоже, вы не можете использовать max () для 2D-массива. Он просто возвращает наибольший массив, а не max () каждого индекса (как указано в нескольких ответах).

$count = array(); foreach($arr as $_arr) { $count = $_arr["count"]; } var_dump(max($count), min($count));

Есть ли эквивалентная встроенная функция для этого? (даже без возможности тестирования )

/ ** * извлекает столбец из 2D-массива с необязательным выбором над другим столбцом * * @param $ массив aArray для извлечения из * @param $ aColName имя столбца для извлечения, например. "O_NAME" * @param $ aColTest (необязательно) имя столбца, чтобы выполнить тест, например. "O_ID" * @param $ aTest (необязательная) строка для теста ex. "> = 10", "== "". $ Toto. "" " * @return 1D массив с только извлеченным столбцом * @access public * / функция extractColFromArray ($ aArray, $ aColName, $ aColTest = "", $ aTest = "") { $ mRes = array (); foreach ($ aArray как $ row) { if (($ aColTest == "") || (eval ("return". $ row [$ aColTest]. $ aTest. ";"))) { $ mRes = $ row [$ aColName]; } } return $ mRes; } // extractColFromArray

Массивы – одно из удобных структурированных способов хранения информации. Каждый элемент такого массива имеет свое место, свой ключ и значение. Содержание же массивов может быть разным, как, например, база номеров, названий или же простых числовых значений. Говоря о числе, перед нами могут вставать разного рода задачи, например, вывод максимального или минимального значения. О том, как это решается на разных языках программирования, сегодня и пойдет речь.

Находим наибольшее и наименьшее значение одномерного массива на PHP

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

$my_array = array(22, 24, 37, 74, 23, 2, 10);

и один, идентичный предыдущему, но уже с ключами:

$my_array = array(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

Постараемся вывести максимальное и минимальное значение этого массива. Для этого мы воспользуемся стандартными функциями «max » и «min » соответственно:

Echo max($my_array); // Выведем 74 echo min($my_array); // Выведем 2

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

На примере массива

$my_array = array(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

это будет выглядеть следующим образом:

$max = array_keys($my_array, max($my_array)); $max = $max;// Ключ максимального значения $min = array_keys($my_array, min($my_array)); $min = $min; // Ключ минимального значения echo $max; // Выведем результат максимального значения

Соответственно, ключ максимального значения – это «4», а минимального – «6».

Находим наибольшее и наименьшее значение многомерного массива на PHP

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

$my_array = array(array(22, 24, 37), array(74, 23, 2), array(10));

И, соответственно, с некими ключами:

$my_array = array(array(1 => 22, 2 => 24, 3 => 37), array(4 => 74, 5 => 23, 6 => 2), array(7 => 10));

В таком случае нахождение максимальных и минимальных значений немного затруднительно, но так же реально.

Для начала, чтобы здесь найти максимум и минимум, преобразуем массив в одномерный:

$out_array = array(); foreach($my_array as $sub_array) { $out_array = array_merge($out_array, $sub_array); }

Конструкция работает для обоих вариантов выше. И далее, по примеру одномерного массива, выведем нужные нам данные:

Echo max($out_array); // Выведем 74 echo min($out_array); // Выведем 2

В качестве небольшого бонуса приведу пример еще одного популярного двумерного массива:

$my_array = array(array("id" => "1", "date" => "2018-03-19", "price" => "5",), array ("id" => "2", "date" => "2018-03-19", "price" => "50",), array ("id" => "3", "date" => "2018-03-19", "price" => "25",));

Под популярностью я подразумеваю не содержание, а пример его структуры. Допустим, что здесь вам необходимо сделать вывод максимального и минимального значения только ключей «price».

Первое, что вам нужно в таком случае – получить новый массив только с этими данными:

$numbers = array_column($my_array, "price");

Echo min($numbers); // Выведем 5 echo max($numbers); // Выведем 50

На этом работа с массивами на PHP закончена. Если вдруг структура вашего массива отличается и вы не знаете, как его обработать – задайте соответствующий вопрос в комментариях, постараюсь вам помочь.

Находим наибольшее и наименьшее значение одномерного массива на JavaScript

В отличие от PHP, в JavaScript вид массивов куда проще, и простой одномерный массив будет выглядеть следующим образом:

Var my_array = ;

Индексы здесь никакие не указываются. Для того чтобы найти в этом массиве максимальное и минимальное значение, напишем две своих простеньких функции:

Function arrayMax(array) { return array.reduce(function(a, b) { return Math.max(a, b); }); } function arrayMin(array) { return array.reduce(function(a, b) { return Math.min(a, b); }); }

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

Alert(arrayMax(my_array)); // Выведем 74 alert(arrayMin(my_array)); // Выведем 2

В этом случае на экран выведутся числа «2» и «74» как минимальное и максимальное значение массива.

Находим наибольшее и наименьшее значение многомерного массива на JavaScript

Многомерные массивы в JavaScript так же просты, и выглядят они следующим образом:

Var my_array = [ , , ];

Давайте попробуем здесь найти максимум и минимум. Для начала мы напишем функцию, с помощью которой по привычной уже нам схеме представим этот массив как одномерный:

Var out_array = ; my_array.forEach(function(v) { Array.prototype.push.apply(out_array, v); });

И с помощью объекта «Math » получим нужные нам значения:

Var min = Math.min.apply(null, out_array); // Получим 2 var max = Math.max.apply(null, out_array); // Получим 74 alert(max); // Выведем 74 на экран

На самом деле вместо объекта «Math » можно использовать наши функции, используемые в варианте с одномерным массивом, но чтобы вы понимали, что любую задачу можно решить несколькими способами – здесь я привел немного другое решение.

Ну и по традиции – небольшой бонус. Рассмотрим еще один многомерный массив с такой структурой:

Var my_array = [ ["Один", "2018-03-19", 5], ["Два", "2018-03-19", 50], ["Три", "2018-03-19", 25], ];

Как мы видим, числовые значения в каждом массиве находятся на третьем месте. Давайте напишем код и получим соответствующие значения только из этих данных:

Var min = +Infinity; var max = -Infinity; my_array.forEach(function(item) { if(+item < min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item > max) { max =+ item; // Ищем максимальное значение } }); alert(min+" "+max); // Выводим результат на экран

На этом все. Не забывайте поддерживать проект. Впереди вас ждет много всего интересного!

© 2024 Вопросы и ответы