У меня такой массив:

Array (0 => array ("id" => "20110209172713", "Date" => "2011-02-09", "Weight" => "200",), 1 => array ("id" => "20110209172747", "Date" => "2011-02-09", "Weight" => "180",), 2 => array ("id" => "20110209172827", "Date" => "2011-02-09", "Weight" => "175",), 3 => array ("id" => "20110211204433", "Date" => "2011-02-11", "Weight" => "195",),)

Мне нужно извлечь минимальные и максимальные значения веса. В этом примере

$ min_value = 175

$ max_value = 200

Любая помощь в том, как это сделать? Спасибо!


2018-05-01 03:06

Ответы:

Вариант 1. Сначала вы сопоставляете массив, чтобы получить эти числа (а не полную информацию):

$numbers = array_column($array, "weight")

Затем вы получаете min и max:

$min = min($numbers); $max = max($numbers);

Вариант 2. (Только если у вас нет PHP 5.5.) То же, что и в варианте 1, но чтобы вырвать значения, используйте array_map:

$numbers = array_map(function($details) { return $details["Weight"]; }, $array);

Вариант 3.

Вариант 4. Если вам нужен минимум min max, array_reduce() может быть быстрее:

$min = array_reduce($array, function($min, $details) { return min($min, $details["weight"]); }, PHP_INT_MAX);

Это делает больше min() с, но они очень быстрые. PHP_INT_MAX должен начинаться с максимума и становиться все ниже и ниже. Вы можете сделать то же самое для $max , но вы начнете с 0 , или -PHP_INT_MAX ,


2018-05-01 03:11

Foreach ($array as $k => $v) { $tArray[$k] = $v["Weight"]; } $min_value = min($tArray); $max_value = max($tArray);


2018-05-01 03:09

Для людей, использующих PHP 5.5+, это можно сделать намного проще с помощью array_column , Не нужно для этих уродливых массивов.

Как получить максимальное значение:

$highest_weight = max(array_column($details, "Weight"));

Как получить минимальное значение

$lowest_weight = min(array_column($details, "Weight"));


2018-01-24 11:04

Интересно отметить, что оба вышеупомянутых решения используют дополнительное хранилище в виде массивов (сначала один из них, а второй - один массив), а затем вы находите min и max, используя массив «дополнительного хранения». Хотя это может быть приемлемым в реальном мире программирования (кто дает два бит о «дополнительном» хранилище?), Он получил бы вас «C» в программировании 101.

Проблема поиска min и max может быть легко решена только двумя дополнительными слотами памяти

$first = intval($input["Weight"]); $min = $first ; $max = $first ; foreach($input as $data) { $weight = intval($data["Weight"]); if($weight <= $min) { $min = $weight ; } if($weight > $max) { $max = $weight ; } } echo " min = $min and max = $max \n " ;


2018-05-01 06:08

$num = array (0 => array ("id" => "20110209172713", "Date" => "2011-02-09", "Weight" => "200"), 1 => array ("id" => "20110209172747", "Date" => "2011-02-09", "Weight" => "180"), 2 => array ("id" => "20110209172827", "Date" => "2011-02-09", "Weight" => "175"), 3 => array ("id" => "20110211204433", "Date" => "2011-02-11", "Weight" => "195")); foreach($num as $key => $val) { $weight = $val["Weight"]; } echo max($weight); echo min($weight);


2018-01-10 06:44

array ("id" => "20110209172713", "Date" => "2011-02-09", "Weight" => "200",), 1 => array ("id" => "20110209172747", "Date" => "2011-02-09", "Weight" => "180",), 2 => array ("id" => "20110209172827", "Date" => "2011-02-09", "Weight" => "175",), 3 => array ("id" => "20110211204433", "Date" => "2011-02-11", "Weight" => "195",),); foreach ($array as $key => $value) { $result[$key] = $value["Weight"]; } $min = min($result); $max = max($result); echo " The array in Minnumum number:".$min."
"; echo " The array in Maximum number:".$max."
"; ?>


2017-11-11 19:33

$Location_Category_array = array(5,50,7,6,1,7,7,30,50,50,50,40,50,9,9,11,2,2,2,2,2,11,21,21,1,12,1,5); asort($Location_Category_array); $count=array_count_values($Location_Category_array);//Counts the values in the array, returns associatve array print_r($count); $maxsize = 0; $maxvalue = 0; foreach($count as $a=>$y){ echo "
".$a."=".$y; if($y>=$maxvalue){ $maxvalue = $y; if($a>$maxsize){ $maxsize = $a; } } } echo "
max = ".$maxsize;

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

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

get key (9)

У меня такой массив:

Array (0 => array ("id" => "20110209172713", "Date" => "2011-02-09", "Weight" => "200",), 1 => array ("id" => "20110209172747", "Date" => "2011-02-09", "Weight" => "180",), 2 => array ("id" => "20110209172827", "Date" => "2011-02-09", "Weight" => "175",), 3 => array ("id" => "20110211204433", "Date" => "2011-02-11", "Weight" => "195",),)

Мне нужно извлечь минимальные и максимальные значения веса. В этом примере

$ min_value = 175

$ max_value = 200

Любая помощь в том, как это сделать? Спасибо!

Answers

Для людей, использующих PHP 5.5+, это может быть сделано намного проще с помощью array_column . Не нужно для этих уродливых массивов.

Как получить максимальное значение:

$highest_weight = max(array_column($details, "Weight"));

Как получить минимальное значение

$lowest_weight = min(array_column($details, "Weight"));

Вариант 1. Сначала вы сопоставляете массив, чтобы получить эти числа (а не полную информацию):

$numbers = array_column($array, "weight")

Затем вы получаете min и max:

$min = min($numbers); $max = max($numbers);

Вариант 2. (Только если у вас нет PHP 5.5.) То же, что и в варианте 1, но чтобы вырвать значения, используйте array_map:

$numbers = array_map(function($details) { return $details["Weight"]; }, $array);

Вариант 3.

Вариант 4. Если вам нужен только min OR max, array_reduce() может быть быстрее:

$min = array_reduce($array, function($min, $details) { return min($min, $details["weight"]); }, PHP_INT_MAX);

Это делает больше min() s, но они очень быстрые. PHP_INT_MAX должен начинаться с максимума и становиться ниже и ниже. Вы можете сделать то же самое для $max , но вы начнете с 0 или -PHP_INT_MAX .

array ("id" => "20110209172713", "Date" => "2011-02-09", "Weight" => "200",), 1 => array ("id" => "20110209172747", "Date" => "2011-02-09", "Weight" => "180",), 2 => array ("id" => "20110209172827", "Date" => "2011-02-09", "Weight" => "175",), 3 => array ("id" => "20110211204433", "Date" => "2011-02-11", "Weight" => "195",),); foreach ($array as $key => $value) { $result[$key] = $value["Weight"]; } $min = min($result); $max = max($result); echo " The array in Minnumum number:".$min."
"; echo " The array in Maximum number:".$max."
"; ?>

Foreach ($array as $k => $v) { $tArray[$k] = $v["Weight"]; } $min_value = min($tArray); $max_value = max($tArray);

быстро печатать пять максимальных и минимальных чисел из массива без использования сортировочного массива в php: -

List of seven highest temperatsures:-"; $m= max($array); for($i=1; $i <7 ; $i++) { $m[$i]=max(array_diff($array,$m)); } foreach ($m as $key => $value) { echo " ".$value; } echo "
List of seven lowest temperatures: "; $mi= min($array); for($i=1; $i <7 ; $i++) { $mi[$i]=min(array_diff($array,$mi)); } foreach ($mi as $key => $value) { echo " ".$value; } ?>

Как насчет без использования предопределенной функции, такой как min или max ?

$arr = ; $val = $arr; $n = count($arr); for($i=1;$i<$n;$i++) { if($val<$arr[$i]) { $val = $val; } else { $val = $arr[$i]; } } print($val);

Интересно отметить, что оба вышеупомянутых решения используют дополнительное хранилище в виде массивов (сначала один из них, а второй - один массив), а затем вы находите min и max, используя массив «дополнительного хранения». Хотя это может быть приемлемым в реальном мире программирования (кто дает два бит о «дополнительном» хранилище?), Он получил бы вас «C» в программировании 101.

Проблема поиска min и max может быть легко решена только двумя дополнительными слотами памяти

$first = intval($input["Weight"]); $min = $first ; $max = $first ; foreach($input as $data) { $weight = intval($data["Weight"]); if($weight <= $min) { $min = $weight ; } if($weight > $max) { $max = $weight ; } } echo " min = $min and max = $max \n " ;

$num = array (0 => array ("id" => "20110209172713", "Date" => "2011-02-09", "Weight" => "200"), 1 => array ("id" => "20110209172747", "Date" => "2011-02-09", "Weight" => "180"), 2 => array ("id" => "20110209172827", "Date" => "2011-02-09", "Weight" => "175"), 3 => array ("id" => "20110211204433", "Date" => "2011-02-11", "Weight" => "195")); foreach($num as $key => $val) { $weight = $val["Weight"]; } echo max($weight); echo min($weight);

Вот несколько способов удалить элемент из массива с помощью JavaScript .

Все описанные методы не изменяют исходный массив и вместо этого создают новый.

Если вы знаете индекс элемента

Предположим, у вас есть массив, и вы хотите удалить элемент в позиции i .

Один из способов - использовать slice() :

const items = ["a", "b", "c", "d", "e", "f"] const i = 3 const filteredItems = items.slice(0, i-1).concat(items.slice(i, items.length)) console.log(filteredItems)

slice() создает новый массив с индексами, которые он получает. Мы просто создаем новый массив - от начала до индекса, который хотим удалить, и конкатенируем другой массив из первой позиции, следующей за той, которую мы удалили до конца массива.

Если вы знаете значение

В этом случае один хороший вариант - использовать filter() , который предлагает более декларативный подход:

const items = ["a", "b", "c", "d", "e", "f"] const valueToRemove = "c" const filteredItems = items.filter(item => item !== valueToRemove) console.log(filteredItems)

Это использует функции стрелок ES6. Вы можете использовать традиционные функции для поддержки старых браузеров:

const items = ["a", "b", "c", "d", "e", "f"] const valueToRemove = "c" const filteredItems = items.filter(function(item) { return item !== valueToRemove }) console.log(filteredItems)

или вы можете использовать Babel и преобразовать код ES6 обратно в ES5, чтобы сделать его более удобоваримым для старых браузеров, но напишите современный JavaScript в своем коде.

Удаление нескольких элементов

Что делать, если вместо одного элемента вы хотите удалить много элементов?

Найдем простейшее решение.

По индексу

Вы можете просто создать функцию и удалить элементы последовательно:

const items = ["a", "b", "c", "d", "e", "f"] const removeItem = (items, i) => items.slice(0, i-1).concat(items.slice(i, items.length)) let filteredItems = removeItem(items, 3) filteredItems = removeItem(filteredItems, 5) //["a", "b", "c", "d"] console.log(filteredItems)

По значению

Вы можете искать включение внутри функции обратного вызова:

const items = ["a", "b", "c", "d", "e", "f"] const valuesToRemove = ["c", "d"] const filteredItems = items.filter(item => !valuesToRemove.includes(item)) // ["a", "b", "e", "f"] console.log(filteredItems)

Избегайте мутирования исходного массива

splice() (не путать с slice()) мутирует исходный массив и его следует избегать.

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

Находим наибольшее и наименьшее значение одномерного массива на 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); // Выводим результат на экран

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

(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
?>