Начало / Игрови конзоли / Min - Намира най-малката стойност. Min - Намира най-малката стойност Минимална стойност в php масив

Min - Намира най-малката стойност. Min - Намира най-малката стойност Минимална стойност в php масив

Масивите са един от удобните структурирани начини за съхраняване на информация. Всеки елемент от такъв масив има свое място, свой ключ и стойност. Съдържанието на масивите може да бъде различно, като например база от числа, имена или прости числови стойности. Говорейки за числа, може да се сблъскаме с различни видове задачи, например да изведем максималната или минималната стойност. Днес ще говорим за това как това се решава в различните езици за програмиране.

Намиране на най-голямата и най-малката стойност на едномерен масив в PHP

Всички масиви се различават по своята структура. Помислете за два прости едномерни масива, единият от които не съдържа ключове:

$my_array = масив (22, 24, 37, 74, 23, 2, 10);

и един идентичен на предишния, но с ключове:

$my_array = масив (1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

Нека се опитаме да покажем максималните и минималните стойности на този масив. За да направим това, ще използваме стандартни функции " макс"И" мин“ съответно:

Echo max ($my_array); // Отпечатване на 74 echo min($my_array); // Печат 2

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

Използване на масив като пример

$my_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 = масив(масив(22, 24, 37), масив(74, 23, 2), масив(10));

И съответно с определени ключове:

$my_array = масив(масив(1 => 22, 2 => 24, 3 => 37), масив(4 => 74, 5 => 23, 6 => 2), масив(7 => 10));

В този случай намирането на максималните и минималните стойности е малко трудно, но също така възможно.

Първо, за да намерим максимума и минимума тук, трансформираме масива в едномерен:

$out_array = масив(); foreach($my_array като $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",), масив ("id" => "3", "date" => "2018-03-19", " цена" => "25",));

Под популярност нямам предвид съдържанието, а пример за неговата структура. Да кажем, че тук трябва да изведете максималните и минималните стойности само на ключовете „цена“.

Първото нещо, от което се нуждаете в този случай, е да получите нов масивсамо с тези данни:

$numbers = array_column($my_array, "цена");

Echo min ($числа); // Отпечатване на 5 echo max($numbers); // Печат 50

Това завършва работата с масиви в PHP. Ако внезапно структурата на вашия масив е различна и не знаете как да я обработите, задайте съответния въпрос в коментарите, ще се опитам да ви помогна.

Намиране на най-голямата и най-малката стойност на едномерен масив в JavaScript

За разлика от PHP, типът на масивите в JavaScript е много по-опростен и един прост едномерен масив ще изглежда така:

Var my_array = ;

Тук не са посочени индекси. За да намерим максималните и минималните стойности в този масив, ще напишем две прости собствени функции:

Функция arrayMax(масив) ( връщане array.reduce(функция(a, b) ( връщане Math.max(a, b); )); ) функция arrayMin(масив) ( връщане array.reduce(функция(a, b) ( връща 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); ));

И използването на обекта " математика"получаваме стойностите, от които се нуждаем:

Var min = Math.min.apply(null, out_array); // Получаване на 2 var max = Math.max.apply(null, out_array); // Получаване на 74 предупреждения (макс.); // Отпечатайте 74 на екрана

Всъщност вместо обекта " математика„Можете да използвате нашите функции, използвани във версията с едномерен масив, но за да разберете, че всеки проблем може да бъде решен по няколко начина – тук съм дал малко по-различно решение.

Е, по традиция – малък бонус. Нека разгледаме друг многомерен масив със следната структура:

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

Както виждаме, числените стойности във всеки масив са на трето място. Нека напишем код и да получим съответните стойности само от тези данни:

Var min = +Безкрайност; var max = -Infinity; my_array.forEach(function(item) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ елемент; // Търси се максималната стойност ) )); предупреждение (мин+" "+макс); // Показване на резултата на екрана

това е всичко Не забравяйте да подкрепите проекта. Очакват ви много интересни неща!

вземете ключ (9)

Имам този масив:

Масив (0 => масив ("id" => "20110209172713", "Дата" => "2011-02-09", "Тегло" => "200",), 1 => масив ("id" => "20110209172747", "Дата" => "2011-02-09", "Тегло" => "180", 2 => масив ("id" => "20110209172827", "Дата" => "2011- 02-09", "Тегло" => "175", 3 => масив ("id" => "20110211204433", "Дата" => "2011-02-11", "Тегло" => "195 ",),)

Трябва да извлека минималните и максималните стойности на теглото. В този пример

$min_стойност = 175

$максимална_стойност = 200

Някаква помощ как да направите това? благодаря ви

Отговори

За хора, използващи PHP 5.5+, това може да се направи много по-лесно с array_column. Няма нужда от тези грозни масиви.

Как да получите максимална стойност:

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

Как да получите минималната стойност

$най-ниско_тегло = min(array_column($details, "Тегло"));

Вариант 1: Първо съпоставяте масива, за да получите тези числа (не пълната информация):

$numbers = array_column($array, "тегло")

След това получавате min и max:

$min = min($числа); $max = max($числа);

Опция 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() s, но те са много бързи. PHP_INT_MAX трябва да започне от максимум и да става все по-нисък. Можете да направите същото за $max, но ще започнете с 0 или -PHP_INT_MAX.

масив ("id" => "20110209172713", "Дата" => "2011-02-09", "Тегло" => "200",), 1 => масив ("id" => "20110209172747", " Дата" => "2011-02-09", "Тегло" => "180",), 2 => масив ("id" => "20110209172827", "Дата" => "2011-02-09", "Тегло" => "175", 3 => масив ("id" => "20110211204433", "Дата" => "2011-02-11", "Тегло" => "195",),) ; foreach ($array as $key => $value) ( ​​​​$result[$key] = $value["Weight"]; ) $min = min($result); $max = max($result); echo "Масивът в Minnumum number:".$min."
"; echo " Масивът в Максимален брой: ".$max."
"; ?>

Foreach ($array като $k => $v) ( $tArray[$k] = $v["Weight"]; ) $min_value = min($tArray); $max_value = max($tArray);

бързо отпечатайте пет максимални и минимални числа от масив, без да използвате масив за сортиране в php: -

Списък със седем най-високи температури:-"; $m= max($array); for($i=1; $i<7 ; $i++) { $m[$i]=max(array_diff($array,$m)); } foreach ($m as $key =>$value) ( ​​​​echo " ".$value; ) echo "
Списък със седем най-ниски температури: "; $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 = брой ($arr); за ($i=1;$i<$n;$i++) { if($val<$arr[$i]) { $val = $val; } else { $val = $arr[$i]; } } print($val);

Интересно е да се отбележи, че и двете от горните решения използват допълнително хранилище под формата на масиви (първият от тях, а вторият един масив) и след това намирате мин. и макс. с помощта на масива „допълнително хранилище“. Въпреки че това може да е приемливо в реалния свят на програмирането (кой дава два бита за "допълнителното" съхранение?), то ще ви донесе "C" в Програмиране 101.

Проблемът с намирането на min и max може лесно да бъде решен само с два допълнителни слота за памет

$first = intval($input["Тегло"]); $min = $първо; $max = $първо; 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 = масив (0 => масив ("id" => "20110209172713", "Дата" => "2011-02-09", "Тегло" => "200"), 1 => масив ("id" => "20110209172747", "Дата" => "2011-02-09", "Тегло" => "180", 2 => масив ("id" => "20110209172827", "Дата" => "2011 - 02-09", "Тегло" => "175"), 3 => масив ("id" => "20110211204433", "Дата" => "2011-02-11", "Тегло" => "195 " ));

foreach($num as $key => $val) ( $weight = $val["Weight"]; ) echo max($weight); ехо min($weight); .

Ето няколко начина премахване на елемент от масив с помощта на JavaScriptВсички описани методи

не променяйте оригиналния масив

и вместо това създайте нов.

Ако знаете индекса на елемента

Да приемем, че имате масив и искате да премахнете елемента на позиция i.

Един от начините е да използвате slice():

const елементи = ["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(filtredItems)

Това използва функции със стрелки на 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)) нека filteredItems = removeItem(items, 3) filteredItems = removeItem(filteredItems, 5) //["a", "b", "c", "d"] конзола. дневник (филтрирани елементи)

По стойност

Можете да търсите включване във функцията за обратно извикване:

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()) променя оригиналния масив и трябва да се избягва.


Имам този масив:

Масив (0 => масив ("id" => "20110209172713", "Дата" => "2011-02-09", "Тегло" => "200",), 1 => масив ("id" => "20110209172747", "Дата" => "2011-02-09", "Тегло" => "180", 2 => масив ("id" => "20110209172827", "Дата" => "2011- 02-09", "Тегло" => "175", 3 => масив ("id" => "20110211204433", "Дата" => "2011-02-11", "Тегло" => "195 ",),)

Трябва да извлека минималните и максималните стойности на теглото. В този пример

$min_стойност = 175

$максимална_стойност = 200

Някаква помощ как да направите това? благодаря ви


2018-05-01 03:06

Отговори:

Вариант 1: Първо съпоставяте масива, за да получите тези числа (не пълната информация):

$numbers = array_column($array, "тегло")

След това получавате min и max:

$min = min($числа); $max = max($числа);

Опция 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() s, но те са много бързи. PHP_INT_MAX трябва да започне от максимум и да става все по-нисък. Можете да направите същото за $max, но ще започнете с 0 или -PHP_INT_MAX.


2018-05-01 03:11

Foreach ($array като $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"));

Как да получите минималната стойност

$най-ниско_тегло = min(array_column($details, "Тегло"));


2018-01-24 11:04

Интересно е да се отбележи, че и двете от горните решения използват допълнително хранилище под формата на масиви (първият от тях, а вторият един масив) и след това намирате мин. и макс. с помощта на масива „допълнително хранилище“. Въпреки че това може да е приемливо в реалния свят на програмирането (кой дава два бита за "допълнителното" съхранение?), то ще ви донесе "C" в Програмиране 101.

Проблемът с намирането на min и max може лесно да бъде решен само с два допълнителни слота за памет

$first = intval($input["Тегло"]); $min = $първо; $max = $първо; 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 = масив (0 => масив ("id" => "20110209172713", "Дата" => "2011-02-09", "Тегло" => "200"), 1 => масив ("id" => "20110209172747", "Дата" => "2011-02-09", "Тегло" => "180", 2 => масив ("id" => "20110209172827", "Дата" => "2011 - 02-09", "Тегло" => "175"), 3 => масив ("id" => "20110211204433", "Дата" => "2011-02-11", "Тегло" => "195 " ));


2018-01-10 06:44

масив ("id" => "20110209172713", "Дата" => "2011-02-09", "Тегло" => "200",), 1 => масив ("id" => "20110209172747", " Дата" => "2011-02-09", "Тегло" => "180",), 2 => масив ("id" => "20110209172827", "Дата" => "2011-02-09", "Тегло" => "175", 3 => масив ("id" => "20110211204433", "Дата" => "2011-02-11", "Тегло" => "195",),) ; foreach ($array as $key => $value) ( ​​​​$result[$key] = $value["Weight"]; ) $min = min($result); $max = max($result); echo "Масивът в Minnumum number:".$min."
"; echo " Масивът в Максимален брой: ".$max."
"; ?>


2017-11-11 19:33

$Location_Category_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); сортирай ($Location_Category_array); $count=array_count_values($Location_Category_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; ) ) ) ехо " max = ".$maxsize;

(PHP 4, PHP 5, PHP 7)

мин. — Намира най-малката стойностОписание Намира най-малката стойностАко бъде подаден само един аргумент - масив от числа,

Коментирайте:

Стойностите от различни типове се сравняват с помощта на стандартни правила за сравнение. Например нечислов низ ( низ) ще бъдат сравнени с цяло число ( цяло число), сякаш е равно 0 , но няколко реда ( низ) ще бъдат сравнени по азбучен ред. Върнатата стойност ще запази оригиналния тип на променливата без преобразуване.

Върнати стойности

функция Намира най-малката стойноствръща стойността на параметъра, който се счита за "най-малък" според стандартните правила за сравнение. Ако множество стойности различни видовеса равни помежду си (т.е. 0 и "abc"), тогава първият ще бъде върнат.

Примери

Пример #1 Пример за използване Намира най-малката стойност

ехо мин(2, 3, 1, 6, 7); // 1
echo min (масив(2, 4, 5)); // 2

// Низът "hello", когато се сравнява с int, се третира като 0
// Тъй като и двете стойности са равни, редът на параметрите определя резултата
echo min(0, "здравей"); // 0
echo min ("здравей", 0); // здравей

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

// Когато сравняваме масиви с различни дължини, min ще върне по-късия
$val = min (масив(2, 2, 2), масив(1, 1, 1, 1)); // масив(2, 2, 2)

// Множество масиви с еднаква дължина се сравняват отляво надясно
// за този пример: 2 == 2, но 4< 5
$val = min (масив(2, 4, 8), масив(2, 5, 1)); // масив(2, 4, 8)

// Ако се сравняват масив и не-масив, масивът никога няма да бъде върнат
// тъй като масивите се считат за по-големи от всички други стойности
$val = min ("низ", масив(2, 5, 7), 42); // низ

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

// от друга страна, 0 се третира като FALSE, така че е "по-малко" от TRUE
$val = min(0, TRUE); // 0
?>

Имам масив в този формат:

Масив ( => Масив ( => 117 => Мрежа => 16) => Масив ( => 188 => FTP => 23) => Масив ( => 189 => Интернет => 48))

Има ли добър начинполучите минимални и максимални стойности на "броене"? Бих могъл да направя това с помощта на множество цикли, но си помислих, че може да има по-добър начин.

За разлика от други, не можете да използвате функциите min() / max() за този проблем, тъй като тези функции не разбират масивите от данни (масив), предадени им. Тези функции работят само за елементи на скаларен масив.

НАЧАЛНО ИЗОБРАЖЕНИЕ

Причината, поради която използването на min() и max() изглежда дава правилния отговор е, че масивите се преобразуват към цели числа, което е недефинирано поведение:

Поведението на преобразуване в цяло число не е дефинирано за други типове. Не разчитайте на наблюдавано поведение, тъй като то може да се промени без предупреждение.

Изявлението ми по-горе относно преобразуването на типове беше погрешно. Всъщност min() и max() работят с масиви, но не по начина, по който OP се нуждае от тях, за да работят. Когато използвате min() и max() с множество масиви или масив от елементи на масив, сравнете елементите елемент по елемент отляво надясно:

$val = min(масив(2, 4, 8), масив(2, 5, 1)); // array(2, 4, 8) /* * първи елемент в сравнение с първия елемент: 2 == 2 * втори елемент в сравнение с втория елемент: 4< 5 * first array is considered the min and is returned */

Преведено в проблема, OP показва защо директното използване на min() и max() изглежда дава правилния резултат. Първите елементи на масива са id, така че min() и max() първо ги сравняват, между другото, което води до правилния резултат, защото най-ниският id е този, който има най-нисък брой, а най-високият id е този който има най-висок брой.

КРАЙ НА РЕДАКТИРАНЕТО

Правилният начин е да използвате цикъл.

$a = array(array("id" => 117, "name" => "Networking", "count" => 16), array("id" => 188, "name" => "FTP", " count" => 23), array("id" => 189, "name" => "Интернет", "count" => 48)); $min = PHP_INT_MAX; $max = 0; foreach ($a като $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() в 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 (по избор) низ за тест пр. ">=10", "== "". $Toto. "" " * @return 1D масив само с извлечената колона * @access public * / функция extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ row [ $ aColName ]; ) ) return $ mRes ) // extractColFromArray