PHP Kunin ang minimum at maximum na mga halaga sa isang two-dimensional na associative array. Min - Hinahanap ang pinakamaliit na halaga ng Php ang bilang ng mga minimum na halaga sa array

(PHP 4, PHP 5, PHP 7)

min - Hinahanap ang pinakamaliit na halaga

Paglalarawan

Kung isang argument lang ang naipasa - isang hanay ng mga numero, min() ibinabalik ang pinakamaliit sa kanila. Kung ang unang argumento ay isang integer o float, dapat mayroong kahit isa pa. Sa kasong ito ang function min() ibabalik ang pinakamaliit sa kanila.

Magkomento:

Ang mga halaga ng iba't ibang uri ay inihambing gamit ang karaniwang mga panuntunan sa paghahambing. Halimbawa, isang non-numeric na string ( string) ay ihahambing sa isang integer ( integer) na parang pantay 0 , ngunit ilang linya ( string) ay ihahambing ayon sa alpabeto. Pananatilihin ng return value ang orihinal na uri ng variable, nang walang conversion.

Ibalik ang mga halaga

Function min() ibinabalik ang halaga ng parameter na itinuturing na "pinakamaliit" ayon sa karaniwang mga panuntunan sa paghahambing. Kung ang ilang mga halaga ng iba't ibang uri ay katumbas ng bawat isa (i.e. 0 At "abc"), pagkatapos ay ibabalik ang una.

Mga halimbawa

Halimbawa #1 Halimbawa ng paggamit min()

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

// Ang string na "hello", kung ihahambing sa int, ay itinuturing bilang 0
// Dahil ang parehong mga halaga ay pantay, ang pagkakasunud-sunod ng mga parameter ay tumutukoy sa resulta
echo min(0, "hello"); // 0
echo min ("hello" , 0 ); // Kamusta

// Dito natin inihahambing ang -1< 0, поэтому -1 является наименьшим значением
echo min ("hello" , - 1 ); // -1

// Kapag naghahambing ng mga array na may iba't ibang haba, ibabalik ng min ang mas maikli
$val = min (array(2 , 2 , 2 ), array(1 , 1 , 1 , 1 )); // array(2, 2, 2)

// Maramihang mga array ng parehong haba ay inihambing mula kaliwa hanggang kanan
// para sa halimbawang ito: 2 == 2, ngunit 4< 5
$val = min (array(2 , 4 , 8 ), array(2 , 5 , 1 )); // array(2, 4, 8)

// Kung ang isang array at isang non-array ay inihambing, ang array ay hindi na ibabalik
// dahil ang mga array ay itinuturing na mas malaki kaysa sa lahat ng iba pang mga halaga
$val = min ("string" , array(2 , 5 , 7 ), 42 ); //string

// Kung ang isang argumento ay NULL o boolean, ihahambing ito sa iba
// gamit ang FALSE rule< TRUE, учитывая остальные типы аргументов
// Sa halimbawang ibinigay, -10 at 10 ay itinuturing bilang TOTOO
$val = min (- 10 , MALI , 10 ); // MALI
$val = min (- 10 , NULL , 10 ); // WALA

// sa kabilang banda, ang 0 ay itinuturing na MALI, kaya ito ay "mas mababa" kaysa sa TOTOO
$val = min(0, TRUE); // 0
?>

Ang mga array ay isa sa mga maginhawang structured na paraan upang mag-imbak ng impormasyon. Ang bawat elemento ng naturang array ay may sariling lugar, sariling susi at halaga. Ang mga nilalaman ng mga array ay maaaring magkakaiba, tulad ng, halimbawa, isang database ng mga numero, pangalan, o simpleng numeric na halaga. Sa pagsasalita tungkol sa mga numero, maaari tayong humarap sa iba't ibang uri ng mga gawain, halimbawa, pagbabawas ng maximum o minimum na halaga. Ngayon ay pag-uusapan natin kung paano ito malulutas sa iba't ibang mga programming language.

Paghahanap ng pinakamalaki at pinakamaliit na halaga ng isang one-dimensional na array sa PHP

Ang lahat ng mga array ay naiiba sa kanilang istraktura. Isaalang-alang ang dalawang simpleng isang-dimensional na array, ang isa ay hindi naglalaman ng mga susi:

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

at isang kapareho sa nauna, ngunit may mga susi:

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

Subukan nating ipakita ang maximum at minimum na halaga ng array na ito. Upang gawin ito gagamitin namin ang mga karaniwang pag-andar " max"At" min" ayon sa pagkakabanggit:

Echo max($my_array); // Print 74 echo min ($my_array); // Print 2

Kung titingnan natin ang pangalawang hanay, bilang isang resulta ay makukuha natin ang susi ng maximum o minimum na mga halaga.

Paggamit ng array bilang isang halimbawa

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

magiging ganito ang hitsura:

$max = array_keys ($my_array, max ($my_array)); $max = $max;// Maximum value key $min = array_keys($my_array, min ($my_array)); $min = $min; // Minimum value key echo $max; // I-print ang resulta ng maximum na halaga

Alinsunod dito, ang maximum na value key ay "4", at ang minimum na value ay "6".

Paghahanap ng pinakamalaki at pinakamaliit na halaga ng isang multidimensional array sa PHP

Ang mga multidimensional na array ay nakikilala sa pamamagitan ng kanilang nesting. Halimbawa, magiging ganito ang hitsura ng isang two-dimensional array nang walang mga susi:

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

At, nang naaayon, na may ilang mga susi:

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

Sa kasong ito, ang paghahanap ng maximum at minimum na mga halaga ay medyo mahirap, ngunit posible rin.

Una, upang mahanap ang maximum at minimum dito, binabago namin ang array sa isang one-dimensional:

$out_array = array(); foreach($my_array bilang $sub_array) ($out_array = array_merge($out_array, $sub_array); )

Gumagana ang disenyo para sa parehong mga opsyon sa itaas. At pagkatapos, kasunod ng halimbawa ng isang one-dimensional na array, ipapakita namin ang data na kailangan namin:

Echo max($out_array); // Print 74 echo min ($out_array); // Print 2

Bilang isang maliit na bonus, magbibigay ako ng isang halimbawa ng isa pang sikat na two-dimensional array:

$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", " presyo" => "25",));

Sa pamamagitan ng katanyagan hindi ko ibig sabihin ang nilalaman, ngunit isang halimbawa ng istraktura nito. Sabihin nating dito kailangan mong i-output ang maximum at minimum na mga halaga ng mga key na "presyo" lamang.

Ang unang bagay na kailangan mo sa kasong ito ay upang makakuha ng isang bagong array na may lamang data na ito:

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

Echo min($numbers); // Print 5 echo max($numbers); // Print 50

Kinukumpleto nito ang gawain sa mga array sa PHP. Kung biglang naiiba ang istraktura ng iyong array at hindi mo alam kung paano iproseso ito, tanungin ang naaangkop na tanong sa mga komento, susubukan kong tulungan ka.

Paghahanap ng pinakamalaki at pinakamaliit na halaga ng isang one-dimensional na array sa JavaScript

Hindi tulad ng PHP, ang uri ng mga arrays sa JavaScript ay mas simple, at ang isang simpleng one-dimensional array ay magiging ganito:

Var my_array = ;

Walang mga index na ipinahiwatig dito. Upang mahanap ang maximum at minimum na mga halaga sa array na ito, magsusulat kami ng dalawang simpleng pag-andar ng aming sarili:

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

na ginagamit upang mahanap ang mga halaga na kailangan natin. Ang paggamit ay simple din:

Alert(arrayMax(my_array)); // Print 74 alert(arrayMin(my_array)); // Print 2

Sa kasong ito, ang mga numerong "2" at "74" ay ipapakita sa screen bilang ang minimum at maximum na mga halaga ng array.

Paghahanap ng pinakamalaki at pinakamaliit na halaga ng isang multidimensional na array sa JavaScript

Ang mga multidimensional na array sa JavaScript ay kasing simple lang, at ganito ang hitsura nila:

Var my_array = [ , , ];

Subukan nating hanapin ang maximum at minimum dito. Upang magsimula, magsusulat kami ng isang function kung saan, ayon sa pamamaraan na pamilyar na kami, ire-represent namin ang array na ito bilang isang-dimensional:

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

At gamit ang bagay na " Math"nakukuha namin ang mga halaga na kailangan namin:

Var min = Math.min.apply(null, out_array); // Kumuha ng 2 var max = Math.max.apply(null, out_array); // Kumuha ng 74 alerto (max); // Print 74 sa screen

Sa katunayan, sa halip na ang bagay " Math"Maaari mong gamitin ang aming mga function na ginamit sa bersyon na may isang isang-dimensional na array, ngunit upang maunawaan mo na ang anumang problema ay maaaring malutas sa maraming paraan - dito nagbigay ako ng isang bahagyang naiibang solusyon.

Well, ayon sa tradisyon - isang maliit na bonus. Isaalang-alang natin ang isa pang multidimensional array na may sumusunod na istraktura:

Var my_array = [["Isa", "2018-03-19", 5], ["Dalawa", "2018-03-19", 50], ["Tatlo", "2018-03-19", 25 ], ];

Tulad ng nakikita natin, ang mga numerong halaga sa bawat hanay ay nasa ikatlong lugar. Sumulat tayo ng ilang code at kunin ang mga katumbas na halaga mula lamang sa data na ito:

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; // Naghahanap ng pinakamataas na halaga ) )); alerto(min+" "+max); // Ipakita ang resulta sa screen

Iyon lang. Huwag kalimutang suportahan ang proyekto. Maraming mga kawili-wiling bagay ang naghihintay sa iyo!

Mayroon akong array sa ganitong format:

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

Mayroon bang magandang paraan para makuha ang min at max na halaga ng "count"? Magagawa ko ito gamit ang maraming mga loop, ngunit naisip ko na maaaring may mas mahusay na paraan.

Hindi tulad ng iba, hindi mo magagamit ang min() / max() na mga function para sa problemang ito, dahil hindi naiintindihan ng mga function na ito ang mga arrays ng data (array) na ipinasa sa kanila. Gumagana lang ang mga function na ito para sa mga elemento ng scalar array.

SIMULAN ANG LARAWAN

Ang dahilan kung bakit ang paggamit ng min() at max() ay tila nagbibigay ng tamang sagot ay dahil ang mga array ay type-casting sa mga integer, na hindi natukoy na pag-uugali:

Ang pag-uugali ng conversion sa integer ay hindi tinukoy para sa iba pang mga uri. Huwag umasa sa anumang naobserbahang gawi dahil maaari itong magbago nang walang babala.

Mali ang pahayag ko sa itaas tungkol sa type-casting. Sa totoo lang, ang min() at max() ay gumagana sa mga array, ngunit hindi sa paraang kailangan ng OP na gumana ang mga ito. Kapag gumagamit ng min() at max() na may maraming mga array o isang array ng mga elemento ng array, ihambing ang mga elemento ng elemento sa pamamagitan ng elemento mula kaliwa hanggang kanan:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) /* * unang elemento kumpara sa unang elemento: 2 == 2 * pangalawang elemento kumpara sa pangalawang elemento: 4< 5 * first array is considered the min and is returned */

Isinalin sa problema, ipinapakita ng OP kung bakit ang direktang paggamit ng min() at max() ay tila nagbibigay ng tamang resulta. Ang mga unang elemento ng array ay id , kaya min() at max() ihambing muna ang mga ito, sa pamamagitan ng paraan, na humahantong sa tamang resulta, dahil ang pinakamababang id ay ang may pinakamababang bilang at ang pinakamataas na id ay ang isa na may pinakamataas na bilang.

END EDIT

Ang tamang paraan ay ang paggamit ng loop.

$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 bilang $i) ($min = min($min, $i["bilang"]); $max = max($max, $i["bilang"]); )

Maaari mong gamitin ang max() at min() function.

Ano ang ginawa mo sa maraming mga loop? Ang isa ay sapat na :)

  1. Kunin ang unang elemento sa pamamagitan ng pagbibilang ng bilang ng parehong $min at max
  2. ulitin ang natitira, ihambing ang bilang sa bawat $min at $max, kung mas kaunti/mas malaki ay magtalaga ng bagong halaga ng bilang

Maaari mong gamitin ang max/min function dahil magbabalik sila ng array na naglalaman ng maximum/minimum ng bawat index. Ang iyong halimbawa ay dapat magbalik ng array(189, "Networking", 48) para sa max . Maaari mong makuha ang puntos mula sa array na ito.

Ang pag-update nito ay hindi gagana gaya ng aking ibinukod. Ang halimbawa ng man page ay nakakapanlinlang at ang halimbawa ay nagbibigay ng tamang resulta gamit ang max, ngunit iyon ay nagkataon lamang.

Mukhang hindi mo magagamit ang max() sa isang 2D array. Ibinabalik lamang nito ang pinakamalaking array, sa halip na max() ng bawat index (tulad ng nakasaad sa ilang mga sagot).

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

Mayroon bang katumbas built-in function para dito? (kahit walang posibilidad pagsubok)

/** * kinukuha ang isang column mula sa isang 2D array na may opsyonal na pagpipilian sa isa pang column * * @param $ aArray na kukunin mula sa * @param $ aColName pangalan ng column na kukunin, hal. "O_NAME" * @param $aColTest (opsyonal) pangalan ng column para patakbuhin ang pagsubok, hal. "O_ID" * @param $aTest (opsyonal) string para sa pagsubok na hal. ">=10", "== "". $Toto. "" " * @return 1D array na ang column lang ang na-extract * @access public * / function extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ($ mRes = $ row [ $ aColName]; ) ) return $ mRes; ) // extractColFromArray