Находим наибольшее и наименьшее значение массива на PHP/JavaScript
Массивы – одно из удобных структурированных способов хранения информации. Каждый элемент такого массива имеет свое место, свой ключ и значение. Содержание же массивов может быть разным, как, например, база номеров, названий или же простых числовых значений. Говоря о числе, перед нами могут вставать разного рода задачи, например, вывод максимального или минимального значения. О том, как это решается на разных языках программирования, сегодня и пойдет речь.
Находим наибольшее и наименьшее значение одномерного массива на 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[0];// Ключ максимального значения
$min = array_keys($my_array, min($my_array));
$min = $min[0]; // Ключ минимального значения
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 = [22, 24, 37, 74, 23, 2, 10];
Индексы здесь никакие не указываются. Для того чтобы найти в этом массиве максимальное и минимальное значение, напишем две своих простеньких функции:
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 = [
[22, 24, 37],
[74, 23, 2],
[10]
];
Давайте попробуем здесь найти максимум и минимум. Для начала мы напишем функцию, с помощью которой по привычной уже нам схеме представим этот массив как одномерный:
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[2] < min) {
min =+ item[2]; // Ищем минимальное значение
}
});
my_array.forEach(function(item) {
if(+item[2] > max) {
max =+ item[2]; // Ищем максимальное значение
}
});
alert(min+" "+max); // Выводим результат на экран
На этом все. Не забывайте поддерживать проект. Впереди вас ждет много всего интересного!