უახლესი სტატიები
მთავარი / სათამაშო კონსოლები / Min - პოულობს უმცირეს მნიშვნელობას. Min - პოულობს უმცირეს მნიშვნელობას მინიმალურ მნიშვნელობას php მასივში

Min - პოულობს უმცირეს მნიშვნელობას. Min - პოულობს უმცირეს მნიშვნელობას მინიმალურ მნიშვნელობას php მასივში

მასივები ინფორმაციის შესანახად ერთ-ერთი მოსახერხებელი სტრუქტურირებული გზაა. ასეთი მასივის თითოეულ ელემენტს აქვს თავისი ადგილი, თავისი გასაღები და მნიშვნელობა. მასივების შინაარსი შეიძლება იყოს განსხვავებული, როგორიცაა, მაგალითად, რიცხვების, სახელების ან მარტივი რიცხვითი მნიშვნელობების საფუძველი. ციფრებზე საუბრისას, ჩვენ შეიძლება შეგვხვდეს სხვადასხვა სახის ამოცანები, მაგალითად, მაქსიმალური ან მინიმალური მნიშვნელობის გამოყვანა. დღეს ჩვენ ვისაუბრებთ იმაზე, თუ როგორ წყდება ეს პროგრამირების სხვადასხვა ენაზე.

PHP-ში ერთგანზომილებიანი მასივის უდიდესი და უმცირესი მნიშვნელობის პოვნა

ყველა მასივი განსხვავდება მათი სტრუქტურით. განვიხილოთ ორი მარტივი ერთგანზომილებიანი მასივი, რომელთაგან ერთი არ შეიცავს გასაღებებს:

$my_მასივი = მასივი(22, 24, 37, 74, 23, 2, 10);

და ერთი წინას იდენტური, მაგრამ გასაღებებით:

$my_მასივი = მასივი (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_მასივი = მასივი (1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

ეს ასე გამოიყურება:

$max = მასივის_გასაღები ($my_array, max($my_array)); $max = $max;// მაქსიმალური მნიშვნელობის გასაღები $min = array_keys($my_array, min($my_array)); $min = $min; // მინიმალური მნიშვნელობის გასაღები echo $max; // ამობეჭდეთ მაქსიმალური მნიშვნელობის შედეგი

შესაბამისად, მაქსიმალური მნიშვნელობის გასაღები არის "4", ხოლო მინიმალური მნიშვნელობა არის "6".

მრავალგანზომილებიანი მასივის უდიდესი და უმცირესი მნიშვნელობის პოვნა PHP-ში

მრავალგანზომილებიანი მასივები გამოირჩევიან ბუდეებით. მაგალითად, ორგანზომილებიანი მასივი ასე გამოიყურება კლავიშების გარეშე:

$my_მასივი = მასივი(მასივი(22, 24, 37), მასივი(74, 23, 2), მასივი(10));

და, შესაბამისად, გარკვეული გასაღებებით:

$my_მასივი = მასივი(მასივი(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 = მასივი (მასივი ("id" => "1", "თარიღი" => "2018-03-19", "ფასი" => "5",), მასივი ("id" => "2" , "თარიღი" => "2018-03-19", "ფასი" => "50",), მასივი ("id" => "3", "თარიღი" => "2018-03-19", " ფასი" => "25"));

პოპულარობაში არ ვგულისხმობ შინაარსს, არამედ მისი სტრუქტურის მაგალითს. ვთქვათ, რომ აქ თქვენ უნდა გამოიყვანოთ მხოლოდ "ფასის" ღილაკების მაქსიმალური და მინიმალური მნიშვნელობები.

პირველი რაც თქვენ გჭირდებათ ამ შემთხვევაში არის მიღება ახალი მასივიმხოლოდ ამ მონაცემებით:

$numbers = array_column($my_array, "ფასი");

ექო მინ($ნომრები); // ამობეჭდვა 5 echo max($numbers); // ბეჭდვა 50

ეს ასრულებს მუშაობას მასივებით PHP-ში. თუ მოულოდნელად თქვენი მასივის სტრუქტურა განსხვავებულია და არ იცით მისი დამუშავება, დასვით შესაბამისი შეკითხვა კომენტარებში, ვეცდები დაგეხმაროთ.

ერთგანზომილებიანი მასივის უდიდესი და უმცირესი მნიშვნელობის პოვნა JavaScript-ში

PHP-სგან განსხვავებით, JavaScript-ში მასივების ტიპი გაცილებით მარტივია და მარტივი ერთგანზომილებიანი მასივი ასე გამოიყურება:

ვარ ჩემი_მასივი = ;

აქ ინდექსები არ არის მითითებული. იმისათვის, რომ ვიპოვოთ მაქსიმალური და მინიმალური მნიშვნელობები ამ მასივში, ჩვენ დავწერთ ორ მარტივ ფუნქციას:

ფუნქცია arrayMax(მასივი) ( return array.reduce(function(a, b) ( return Math.max(a, b); )); ) ფუნქცია arrayMin(მასივი) ( return array.reduce(function(a, b) ( დაბრუნება Math.min(a, b));

რომლებიც გამოიყენება ჩვენთვის საჭირო მნიშვნელობების მოსაძებნად. გამოყენება ასევე მარტივია:

Alert(arrayMax(my_array)); // Print 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 = +Infinity; var max = -Infinity; my_array.forEach(function(item) (if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ ელემენტი; // ვეძებთ მაქსიმალურ მნიშვნელობას ) )); alert(min+" "+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_value = 175

$max_value = 200

რაიმე დახმარება თუ როგორ უნდა გავაკეთოთ ეს? გმადლობთ!

პასუხები

ადამიანებისთვის, რომლებიც იყენებენ PHP 5.5+-ს, ამის გაკეთება ბევრად უფრო ადვილია array_column-ით. არ არის საჭირო ეს მახინჯი მასივები.

როგორ მივიღოთ მაქსიმალური მნიშვნელობა:

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

როგორ მივიღოთ მინიმალური მნიშვნელობა

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

ვარიანტი 1: ჯერ აჯამებთ მასივს, რომ მიიღოთ ეს რიცხვები (არა სრული ინფორმაცია):

$numbers = array_column ($მასივი, "წონა")

შემდეგ მიიღებთ min და მაქსიმუმს:

$min = min($numbers); $max = max($ნომრები);

ვარიანტი 2. (მხოლოდ იმ შემთხვევაში, თუ არ გაქვთ PHP 5.5.) იგივეა, რაც 1-ლი ვარიანტი, მაგრამ მნიშვნელობების წასაღებად გამოიყენეთ array_map:

$numbers = array_map(function($details) ( დაბრუნება $details["წონა"]; ), $მასივი);

ვარიანტი 3.

ვარიანტი 4: თუ გჭირდებათ მხოლოდ min OR max, array_reduce() შეიძლება იყოს უფრო სწრაფი:

$min = array_reduce($მასივი, ფუნქცია($min, $details) ( return min($min, $details["წონა"]); ), 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 ($მასივი $key => $value) ($result[$key] = $value["წონა"]; ) $min = min($result); $max = max($ შედეგი); echo "მაივი მინუმუმ რიცხვში:".$min."
"; echo " მასივი მაქსიმალურ რიცხვში: ".$max."
"; ?>

Foreach ($მასივი $k => $v) ( $tArray[$k] = $v["წონა"]; ) $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) (ეხო " ".$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);

საინტერესოა აღინიშნოს, რომ ორივე ზემოაღნიშნული გადაწყვეტა იყენებს დამატებით მეხსიერებას მასივების სახით (პირველი მათგანი და მეორე ერთი მასივი) და შემდეგ იპოვით მინ და მაქსიმუმს "დამატებითი შენახვის" მასივის გამოყენებით. მიუხედავად იმისა, რომ ეს შეიძლება იყოს მისაღები პროგრამირების რეალურ სამყაროში (ვინ იძლევა ორ ბიტს "დამატებით" შენახვის შესახებ?), ის მოგცემთ "C"-ს პროგრამირების 101-ში.

min და max-ის პოვნის პრობლემა მარტივად შეიძლება მოგვარდეს მხოლოდ ორი დამატებითი მეხსიერების სლოტით

$first = intval($input["წონა"]); $min = $პირველი ; $max = $პირველი ; foreach($input, როგორც $data) ($weight = intval($data["წონა"]); if($weight<= $min) { $min = $weight ; } if($weight >$max) ($max = $weight ;) ) echo "min = $min და 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 როგორც $key => $val) ( $weight = $val["წონა"]; ) echo max($weight); echo min ($წონა); .

აქ არის რამდენიმე გზა ამოიღეთ ელემენტი მასივიდან 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) ( დაბრუნების ელემენტი != = 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(item, 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_value = 175

$max_value = 200

რაიმე დახმარება როგორ გავაკეთო ეს? გმადლობთ!


2018-05-01 03:06

პასუხები:

ვარიანტი 1: ჯერ აჯამებთ მასივს, რომ მიიღოთ ეს რიცხვები (არა სრული ინფორმაცია):

$numbers = array_column ($მასივი, "წონა")

შემდეგ მიიღებთ min და მაქსიმუმს:

$min = min($numbers); $max = max($ნომრები);

ვარიანტი 2. (მხოლოდ იმ შემთხვევაში, თუ არ გაქვთ PHP 5.5.) იგივეა, რაც 1-ლი ვარიანტი, მაგრამ მნიშვნელობების წასაღებად გამოიყენეთ array_map:

$numbers = array_map(function($details) ( დაბრუნება $details["წონა"]; ), $მასივი);

ვარიანტი 3.

ვარიანტი 4: თუ გჭირდებათ მინიმალური მაქსიმუმი, array_reduce() შეიძლება იყოს უფრო სწრაფი:

$min = array_reduce($მასივი, ფუნქცია($min, $details) ( return min($min, $details["წონა"]); ), PHP_INT_MAX);

ეს აკეთებს min() s-ზე მეტს, მაგრამ ისინი ძალიან სწრაფია. PHP_INT_MAX უნდა იწყებოდეს მაქსიმუმზე და იკლებს და იკლებს. თქვენ შეგიძლიათ იგივე გააკეთოთ $max-ისთვის, მაგრამ დაიწყებთ 0-ით ან -PHP_INT_MAX-ით.


2018-05-01 03:11

Foreach ($მასივი $k => $v) ( $tArray[$k] = $v["წონა"]; ) $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

საინტერესოა აღინიშნოს, რომ ორივე ზემოაღნიშნული გადაწყვეტა იყენებს დამატებით მეხსიერებას მასივების სახით (პირველი მათგანი და მეორე ერთი მასივი) და შემდეგ იპოვით მინ და მაქსიმუმს "დამატებითი შენახვის" მასივის გამოყენებით. მიუხედავად იმისა, რომ ეს შეიძლება იყოს მისაღები პროგრამირების რეალურ სამყაროში (ვინ იძლევა ორ ბიტს "დამატებით" შენახვის შესახებ?), ის მოგცემთ "C"-ს პროგრამირების 101-ში.

min და max-ის პოვნის პრობლემა მარტივად შეიძლება მოგვარდეს მხოლოდ ორი დამატებითი მეხსიერების სლოტით

$first = intval($input["წონა"]); $min = $პირველი ; $max = $პირველი ; foreach($input, როგორც $data) ($weight = intval($data["წონა"]); if($weight<= $min) { $min = $weight ; } if($weight >$max) ($max = $weight ;) ) echo "min = $min და 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 ($მასივი $key => $value) ($result[$key] = $value["წონა"]; ) $min = min($result); $max = max($ შედეგი); echo "მაივი მინუმუმ რიცხვში:".$min."
"; echo " მასივი მაქსიმალურ რიცხვში: ".$max."
"; ?>


2017-11-11 19:33

$ადგილმდებარეობა_კატეგორიის_მასივი = მასივი(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);//ითვლის მნიშვნელობებს მასივში, აბრუნებს ასოცირებულ მასივს print_r($count);
$maxsize = 0;
$maxvalue = 0;

foreach($count როგორც $a=>$y)(echo "

".$a."=".$y; if($y>=$maxvalue)( $maxvalue = $y; if($a>$maxsize)( $maxsize = $a; ) ) ) echo " max = ".$maxsize;

(PHP 4, PHP 5, PHP 7)

წთ - პოულობს უმცირეს მნიშვნელობასაღწერა პოულობს უმცირეს მნიშვნელობასთუ მხოლოდ ერთი არგუმენტია გადაცემული - რიცხვების მასივი,

კომენტარი:

სხვადასხვა ტიპის მნიშვნელობები შედარებულია სტანდარტული შედარების წესების გამოყენებით. მაგალითად, არაციფრული სტრიქონი ( სიმებიანი) შედარდება მთელ რიცხვთან ( მთელი რიცხვი) თითქოს თანაბარი იყოს 0 , მაგრამ რამდენიმე ხაზი ( სიმებიანი) შედარება მოხდება ანბანურად. დაბრუნებული მნიშვნელობა შეინარჩუნებს ცვლადის თავდაპირველ ტიპს, კონვერტაციის გარეშე.

ღირებულებების დაბრუნება

ფუნქცია პოულობს უმცირეს მნიშვნელობასაბრუნებს პარამეტრის მნიშვნელობას, რომელიც ითვლება „ყველაზე პატარად“ სტანდარტული შედარების წესების მიხედვით. თუ მრავალი მნიშვნელობა სხვადასხვა სახისერთმანეთის ტოლია (ე.ი. 0 და "abc"), შემდეგ პირველი დაბრუნდება.

მაგალითები

მაგალითი #1 გამოყენების მაგალითი პოულობს უმცირეს მნიშვნელობას

echo min(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 = მასივი(მასივი("id" => 117, "name" => "ქსელი", "count" => 16), მასივი ("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, "ქსელური", 48) მაქსიმუმ. ამის შემდეგ შეგიძლიათ აიღოთ ქულა ამ მასივიდან.

ამის განახლება არ მუშაობს, როგორც მე გამოვრიცხე. კაცის გვერდის მაგალითი შეცდომაში შეჰყავს და მაგალითი იძლევა სწორ შედეგს max-ის გამოყენებით, მაგრამ ეს უბრალოდ დამთხვევაა.

როგორც ჩანს, თქვენ არ შეგიძლიათ გამოიყენოთ max() 2D მასივზე. ის უბრალოდ აბრუნებს უდიდეს მასივს, ვიდრე max() თითოეული ინდექსის (როგორც რამდენიმე პასუხშია ნათქვამი).

$count = მასივი(); foreach($arr როგორც $_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]. $); aტესტი ";"))) ($ mRes = $ row [ $ aColName ]; ) ) დააბრუნეთ $ mRes ) // extractColFromArray.