Php maksimum dizi öğesi. Min - En küçük değeri bulur. PHP'de çok boyutlu bir dizinin en büyük ve en küçük değerini bulma

  • 03.11.2019

(PHP 4, PHP 5, PHP 7)

dk — En küçük değeri bulur

Tanım

Yalnızca bir argüman aktarılırsa - bir sayı dizisi, dk() en küçüğünü döndürür. İlk argüman bir tamsayı veya kayan nokta ise en az bir tane daha olmalıdır. Bu durumda fonksiyon dk() en küçüğünü geri verecektir.

Yorum:

Farklı türdeki değerler standart karşılaştırma kuralları kullanılarak karşılaştırılır. Örneğin sayısal olmayan bir dize ( sicim) bir tamsayıyla ( tamsayı) sanki eşitmiş gibi 0 , ancak birkaç satır ( sicim) alfabetik olarak karşılaştırılacaktır. Dönüş değeri, dönüşüm olmadan değişkenin orijinal türünü koruyacaktır.

Dönüş değerleri

İşlev dk() standart karşılaştırma kurallarına göre "en küçük" olarak kabul edilen parametrenin değerini döndürür. Farklı türden birkaç değer birbirine eşitse (ör. 0 Ve "ABC"), ardından ilki döndürülecektir.

Örnekler

Örnek #1 Kullanım örneği dk()

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

// "Merhaba" dizisi int ile karşılaştırıldığında 0 olarak kabul edilir
// Her iki değer de eşit olduğundan parametrelerin sırası sonucu belirler
echo min(0, "merhaba"); // 0
echo min ("merhaba", 0); // Merhaba

// Burada -1'i karşılaştırıyoruz< 0, поэтому -1 является наименьшим значением
echo min ("merhaba", - 1); // -1

// Farklı uzunluktaki dizileri karşılaştırırken min kısa olanı döndürür
$val = min (dizi(2, 2, 2), dizi(1, 1, 1, 1)); // dizi(2, 2, 2)

// Aynı uzunluktaki birden fazla dizi soldan sağa doğru karşılaştırılır
// bu örnek için: 2 == 2, ancak 4< 5
$val = min (dizi(2, 4, 8), dizi(2, 5, 1)); // dizi(2, 4, 8)

// Bir dizi ve dizi olmayan bir şey karşılaştırılırsa dizi asla döndürülmez
// diziler diğer tüm değerlerden daha büyük kabul edildiğinden
$val = min ("dizge", dizi(2, 5, 7), 42); //sicim

// Eğer bir argüman NULL veya boolean ise diğerleriyle karşılaştırılacaktır
// YANLIŞ kuralını kullanarak< TRUE, учитывая остальные типы аргументов
// Verilen örnekte -10 ve 10 DOĞRU olarak değerlendiriliyor
$değer = dk (- 10, YANLIŞ, 10); // YANLIŞ
$değer = dk (- 10, NULL, 10); // HÜKÜMSÜZ

// diğer taraftan 0, YANLIŞ olarak kabul edilir, dolayısıyla DOĞRU'dan "küçüktür"
$değer = min(0, DOĞRU); // 0
?>

Diziler, bilgiyi depolamanın uygun yapılandırılmış yollarından biridir. Böyle bir dizinin her elemanının kendi yeri, kendi anahtarı ve değeri vardır. Dizilerin içeriği, örneğin sayı tabanı, adlar veya basit sayısal değerler gibi farklı olabilir. Sayılardan bahsetmişken, maksimum veya minimum değeri çıkarmak gibi çeşitli görevlerle karşı karşıya kalabiliriz. Bugün bunun farklı programlama dillerinde nasıl çözüldüğünden bahsedeceğiz.

PHP'de tek boyutlu bir dizinin en büyük ve en küçük değerini bulma

Tüm diziler yapı bakımından farklılık gösterir. Biri anahtar içermeyen iki basit tek boyutlu diziyi düşünün:

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

ve bir öncekinin aynısı, ancak tuşlarıyla:

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

Bu dizinin maksimum ve minimum değerlerini görüntülemeye çalışalım. Bunu yapmak için standart işlevleri kullanacağız " maksimum" Ve " dk." sırasıyla:

Echo max($my_array); // 74 yazdır echo min($my_array); // Yazdır 2

İkinci diziye daha detaylı bakarsak sonuç olarak maksimum veya minimum değerlerin anahtarını alabiliriz.

Örnek olarak bir dizi kullanma

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

Bunun gibi görünecek:

$max = array_keys($my_dizi, max($my_dizi)); $max = $max;// Maksimum değer anahtarı $min = array_keys($my_array, min($my_array)); $dakika = $dakika; // Minimum değer anahtarı echo $max; // Maksimum değerin sonucunu yazdır

Buna göre maksimum değer anahtarı “4”, minimum değer ise “6”dır.

PHP'de çok boyutlu bir dizinin en büyük ve en küçük değerini bulma

Çok boyutlu diziler iç içe geçmeleriyle ayırt edilir. Örneğin, iki boyutlu bir dizi, anahtarlar olmadan şuna benzer:

$dizim = dizi(dizi(22, 24, 37), dizi(74, 23, 2), dizi(10));

Ve buna göre belirli tuşlarla:

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

Bu durumda maksimum ve minimum değerleri bulmak biraz zor ama aynı zamanda mümkün.

Öncelikle burada maksimum ve minimumu bulmak için diziyi tek boyutlu hale getiriyoruz:

$out_array = dizi(); foreach($my_array as $sub_array) ( $out_array = array_merge($out_array, $sub_array); )

Tasarım yukarıdaki her iki seçenek için de geçerlidir. Daha sonra tek boyutlu dizi örneğini takip ederek ihtiyacımız olan verileri görüntüleyeceğiz:

Yankı max($out_array); // 74 yazdır echo min($out_array); // Yazdır 2

Küçük bir bonus olarak, başka bir popüler iki boyutlu diziye örnek vereceğim:

$my_array = array(array("id" => "1", "tarih" => "2018-03-19", "fiyat" => "5",), array ("id" => "2" , "tarih" => "2018-03-19", "fiyat" => "50",), array ("id" => "3", "tarih" => "2018-03-19", " fiyat" => "25",));

Popülerlik derken içeriği değil, yapısının bir örneğini kastediyorum. Diyelim ki burada sadece “fiyat” tuşlarının maksimum ve minimum değerlerinin çıktısını almanız gerekiyor.

Bu durumda ihtiyacınız olan ilk şey yalnızca bu verileri içeren yeni bir dizi elde etmektir:

$sayılar = array_column($dizim, "fiyat");

Echo min($sayılar); // 5 echo max($sayı); // 50'yi yazdır

Bu, PHP'deki dizilerle çalışmayı tamamlar. Eğer aniden dizinizin yapısı farklılaşırsa ve bunu nasıl işleyeceğinizi bilmiyorsanız, yorumlarda uygun soruyu sorun, size yardımcı olmaya çalışacağım.

JavaScript'te tek boyutlu bir dizinin en büyük ve en küçük değerini bulma

PHP'den farklı olarak, JavaScript'teki dizilerin türü çok daha basittir ve basit, tek boyutlu bir dizi şöyle görünecektir:

Var my_array = ;

Burada herhangi bir indeks belirtilmemiştir. Bu dizideki maksimum ve minimum değerleri bulmak için kendimize ait iki basit fonksiyon yazacağız:

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

ihtiyacımız olan değerleri bulmak için kullanılır. Kullanımı da basittir:

Alert(arrayMax(my_array)); // 74 alarmı yazdır(arrayMin(my_array)); // Yazdır 2

Bu durumda dizinin minimum ve maksimum değerleri olarak “2” ve “74” sayıları ekranda görünecektir.

JavaScript'te çok boyutlu bir dizinin en büyük ve en küçük değerini bulma

JavaScript'teki çok boyutlu diziler de aynı derecede basittir ve şöyle görünürler:

Var benim_dizi = [ , , ];

Burada maksimum ve minimumu bulmaya çalışalım. Başlangıç ​​olarak, zaten aşina olduğumuz şemaya göre bu diziyi tek boyutlu olarak temsil edeceğimiz bir fonksiyon yazacağız:

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

Ve nesneyi kullanarak " Matematik"İhtiyacımız olan değerleri alıyoruz:

Var min = Math.min.apply(null, out_array); // 2 var max'ı al = Math.max.apply(null, out_array); // 74 uyarı alın(max); // 74'ü ekrana yazdır

Aslında nesne yerine " Matematik"Versiyonda kullanılan fonksiyonlarımızı tek boyutlu bir diziyle kullanabilirsiniz, ancak herhangi bir problemin birkaç yolla çözülebileceğini anlamanız için - burada biraz farklı bir çözüm verdim.

Geleneğe göre küçük bir bonus. Aşağıdaki yapıya sahip başka bir çok boyutlu diziyi ele alalım:

Var my_array = [["Bir", "2018-03-19", 5], ["İki", "2018-03-19", 50], ["Üç", "2018-03-19", 25 ], ];

Gördüğümüz gibi her dizideki sayısal değerler üçüncü sırada yer alıyor. Biraz kod yazalım ve karşılık gelen değerleri sadece bu verilerden alalım:

Var min = +Sonsuz; var max = -Sonsuz; my_array.forEach(function(item) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ öğe; // Maksimum değer aranıyor ) )); uyarı(min+" "+maks); // Sonucu ekranda göster

Bu kadar. Projeye destek olmayı unutmayın. Önünüzde pek çok ilginç şey sizi bekliyor!

Bu formatta bir dizim var:

Dizi ( => Dizi ( => 117 => Ağ => 16) => Dizi ( => 188 => FTP => 23) => Dizi ( => 189 => İnternet => 48))

"Count"un minimum ve maksimum değerlerini almanın iyi bir yolu var mı? Bunu birden fazla döngü kullanarak yapabilirim, ancak daha iyi bir yol olabileceğini düşündüm.

Diğerlerinden farklı olarak min() / max() işlevlerini bu problem için kullanamazsınız çünkü bu işlevler kendilerine iletilen veri dizilerini (dizi) anlamazlar. Bu işlevler yalnızca skaler dizi öğeleri için çalışır.

GÖRÜNTÜYÜ BAŞLAT

min() ve max() kullanmanın doğru cevabı vermesinin nedeni, dizilerin tamsayılara tür ataması yapmasıdır, bu tanımsız bir davranıştır:

Tamsayıya dönüştürme davranışı diğer türler için tanımlanmamıştır. Uyarı yapılmadan değişebileceği için gözlemlenen davranışlara güvenmeyin.

Tip döküm ile ilgili yukarıdaki ifadem yanlıştı. Aslında min() ve max() dizilerle çalışır, ancak OP'nin çalışması için ihtiyaç duyduğu şekilde değildir. Min() ve max()'ı birden çok diziyle veya dizi öğesi dizisiyle kullanırken, öğeleri soldan sağa öğe öğe karşılaştırın:

$değer = min(dizi(2, 4, 8), dizi(2, 5, 1)); // array(2, 4, 8) /* * birinci eleman birinci elemanla karşılaştırıldı: 2 == 2 * ikinci eleman ikinci elemanla karşılaştırıldı: 4< 5 * first array is considered the min and is returned */

Soruna çevrildiğinde OP, neden doğrudan min() ve max() kullanımının doğru sonucu verdiğini gösteriyor. Dizinin ilk elemanları id'dir, dolayısıyla min() ve max() bunları önce karşılaştırır, bu da doğru sonuca götürür, çünkü en düşük kimlik en düşük sayıya sahip olandır ve en yüksek kimlik ise birdir. en yüksek sayıya sahip olanıdır.

DÜZENLEMEYİ SONLANDIR

Doğru yol bir döngü kullanmaktır.

$a = array(array("id" => 117, "name" => "Ağ İletişimi", "count" => 16), array("id" => 188, "name" => "FTP", " count" => 23), array("id" => 189, "name" => "Internet", "count" => 48)); $min = PHP_INT_MAX; $maks = 0; foreach ($a as $i) ( $min = min($min, $i["count"]); $max = max($max, $i["count"]); )

max() ve min() işlevlerini kullanabilirsiniz.

Çoklu döngülerle ne yaptınız? Bir tane yeter :)

  1. Hem $min hem de max sayısını sayarak ilk öğeyi alın
  2. geri kalanı yineleyin, sayacı her $min ve $max ile karşılaştırın, eğer daha az/daha büyükse yeni bir sayım değeri atayın

Her indeksin maksimum/minimumunu içeren bir dizi döndürecekleri için max/min işlevlerini kullanabilirsiniz. Örneğiniz max için array(189, "Networking", 48) değerini döndürmelidir. Daha sonra bu diziden puanı alabilirsiniz.

Bunu güncellemek, göz ardı ettiğim için işe yaramıyor. Man sayfası örneği yanıltıcıdır ve örnek max kullanılarak doğru sonucu verir, ancak bu sadece bir tesadüf.

Görünüşe göre 2B dizide max() işlevini kullanamazsınız. Her dizinin max() yerine (birkaç yanıtta belirtildiği gibi) en büyük diziyi döndürür.

$sayısı = dizi(); foreach($arr as $_dizi) ( $count = $_arr["count"]; ) var_dump(max($count), min($count));

Eşdeğeri var mı yerleşik bunun için işlev? (olasılık olmasa bile test yapmak)

/** * 2B diziden, başka bir sütun üzerinde isteğe bağlı seçimle bir sütunu alır * * @param $ aArray'den alınacak * @param $ aColName alınacak sütunun adı, ör. "O_NAME" * @param $aColTest (isteğe bağlı) testi çalıştırmak için sütun adı, ör. "O_ID" * @param $aTest (isteğe bağlı) test için dize. ">=10", "== "". $Toto. "" " * @return Yalnızca sütunu çıkarılmış 1 boyutlu dizi * @access public * / function extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = dizi()); foreach ($aArray as $satır) ( if (($aColTest == "") || (eval("return". $row[$aColTest). $ aTest. ";"))) ( $ mRes = $ satır [ $ aColName ]; )) return $ mRes ) // extractColFromArray