Php mencari nilai maksimum dalam tatasusunan. PHP Dapatkan nilai minimum dan maksimum dalam tatasusunan bersekutu dua dimensi. Mencari nilai terbesar dan terkecil tatasusunan berbilang dimensi dalam JavaScript

Saya mempunyai tatasusunan dalam format ini:

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

Adakah terdapat cara yang baik untuk mendapatkan nilai min dan maksimum "kiraan"? Saya boleh melakukan ini menggunakan berbilang gelung, tetapi saya fikir mungkin ada cara yang lebih baik.

Tidak seperti yang lain, anda tidak boleh menggunakan fungsi min() / max() untuk masalah ini, kerana fungsi ini tidak memahami tatasusunan data (tatasusunan) yang dihantar kepada mereka. Fungsi ini hanya berfungsi untuk elemen tatasusunan skalar.

MULAKAN IMEJ

Sebab mengapa menggunakan min() dan max() nampaknya memberikan jawapan yang betul adalah kerana tatasusunan adalah menghantar taip kepada integer, yang merupakan tingkah laku yang tidak ditentukan:

Tingkah laku penukaran kepada integer tidak ditakrifkan untuk jenis lain. Jangan bergantung pada sebarang tingkah laku yang diperhatikan kerana ia mungkin berubah tanpa amaran.

Kenyataan saya di atas tentang pemutus jenis adalah salah. Sebenarnya min() dan max() berfungsi dengan tatasusunan, tetapi tidak mengikut cara OP memerlukannya untuk berfungsi. Apabila menggunakan min() dan max() dengan berbilang tatasusunan atau tatasusunan elemen tatasusunan, bandingkan elemen elemen demi elemen dari kiri ke kanan:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) /* * elemen pertama berbanding elemen pertama: 2 == 2 * elemen kedua berbanding elemen kedua: 4< 5 * first array is considered the min and is returned */

Diterjemahkan ke dalam masalah, OP menunjukkan mengapa secara langsung menggunakan min() dan max() nampaknya memberikan hasil yang betul. Elemen pertama tatasusunan ialah id , jadi min() dan max() bandingkannya dahulu, dengan cara itu, membawa kepada hasil yang betul, kerana id terendah ialah id yang mempunyai kiraan terendah dan id tertinggi ialah yang yang mempunyai kiraan tertinggi.

TAMAT EDIT

Cara yang betul ialah menggunakan gelung.

$a = array(array("id" => 117, "name" => "Rangkaian", "count" => 16), array("id" => 188, "name" => "FTP", " count" => 23), array("id" => 189, "name" => "Internet", "count" => 48)); $min = PHP_INT_MAX; $maks = 0; foreach ($a sebagai $i) ($min = min($min, $i["count"]); $max = max($maks, $i["count"]); )

Anda boleh menggunakan fungsi max() dan min().

Apa yang anda lakukan dengan berbilang gelung? Cukuplah satu :)

  1. Dapatkan elemen pertama dengan mengira kiraan kedua-dua $min dan maks
  2. ulangi yang lain, bandingkan kiraan dengan setiap $min dan $max, jika kurang/lebih besar tetapkan nilai kiraan baharu

Anda boleh menggunakan fungsi maks/min kerana ia akan mengembalikan tatasusunan yang mengandungi maksimum/minimum setiap indeks. Contoh anda harus mengembalikan tatasusunan(189, "Rangkaian", 48) untuk max . Anda kemudian boleh merebut skor daripada tatasusunan ini.

Mengemas kini ini tidak berfungsi seperti yang saya tolak. Contoh halaman manual mengelirukan dan contoh memberikan hasil yang betul menggunakan maks, tetapi itu hanya kebetulan.

Nampaknya anda tidak boleh menggunakan max() pada tatasusunan 2D. Ia hanya mengembalikan tatasusunan terbesar, bukannya max() setiap indeks (seperti yang dinyatakan dalam beberapa jawapan).

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

Adakah terdapat setara terbina dalam fungsi untuk ini? (walaupun tanpa kemungkinan ujian)

/** * mendapatkan semula lajur daripada tatasusunan 2D dengan pilihan pilihan di atas lajur lain * * @param $ aArray untuk diambil daripada * @param $ aColName nama lajur untuk diambil, mis. "O_NAME" * @param $aColTest (pilihan) nama lajur untuk menjalankan ujian, mis. "O_ID" * @param $aTest (pilihan) rentetan untuk ujian ex. ">=10", "== "". $Toto. "" " * @kembali tatasusunan 1D dengan hanya lajur yang diekstrak * @access public * / ekstrak fungsiColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ($mRes = array()); foreach ($aArray as $row) ( if ($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ row [ $ aColName]; ) ) return $ mRes; ) // extractColFromArray

Tatasusunan ialah salah satu cara berstruktur yang mudah untuk menyimpan maklumat. Setiap elemen tatasusunan sedemikian mempunyai tempatnya sendiri, kunci dan nilainya sendiri. Kandungan tatasusunan boleh berbeza, seperti, sebagai contoh, pangkalan data nombor, nama atau nilai angka mudah. Bercakap tentang nombor, kita mungkin berhadapan dengan pelbagai jenis tugas, contohnya, menyimpul nilai maksimum atau minimum. Hari ini kita akan bercakap tentang bagaimana ini diselesaikan dalam bahasa pengaturcaraan yang berbeza.

Mencari nilai terbesar dan terkecil tatasusunan satu dimensi dalam PHP

Semua tatasusunan berbeza dalam strukturnya. Pertimbangkan dua tatasusunan satu dimensi yang mudah, satu daripadanya tidak mengandungi kunci:

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

dan satu sama dengan yang sebelumnya, tetapi dengan kunci:

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

Mari cuba memaparkan nilai maksimum dan minimum tatasusunan ini. Untuk melakukan ini, kami akan menggunakan fungsi standard " maks"Dan" min"masing-masing:

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

Jika kita melihat lebih dekat pada tatasusunan kedua, maka sebagai hasilnya kita boleh mendapatkan kunci nilai maksimum atau minimum.

Menggunakan tatasusunan sebagai contoh

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

ia akan kelihatan seperti ini:

$maks = array_keys($my_array, max($my_array)); $maks = $maks;// Kekunci nilai maksimum $min = array_keys($my_array, min ($my_array)); $min = $min; // Kekunci nilai minimum gema $max; // Cetak hasil nilai maksimum

Oleh itu, kunci nilai maksimum ialah "4", dan nilai minimum ialah "6".

Mencari nilai terbesar dan terkecil tatasusunan berbilang dimensi dalam PHP

Tatasusunan berbilang dimensi dibezakan dengan sarangnya. Sebagai contoh, tatasusunan dua dimensi akan kelihatan seperti ini tanpa kekunci:

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

Dan, sewajarnya, dengan kunci tertentu:

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

Dalam kes ini, mencari nilai maksimum dan minimum agak sukar, tetapi juga mungkin.

Pertama, untuk mencari maksimum dan minimum di sini, kami mengubah tatasusunan menjadi satu dimensi:

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

Reka bentuk berfungsi untuk kedua-dua pilihan di atas. Dan kemudian, mengikut contoh tatasusunan satu dimensi, kami akan memaparkan data yang kami perlukan:

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

Sebagai bonus kecil, saya akan memberikan contoh tatasusunan dua dimensi yang popular:

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

Dengan populariti saya tidak bermaksud kandungan, tetapi contoh strukturnya. Katakan di sini anda perlu mengeluarkan nilai maksimum dan minimum hanya kekunci "harga".

Perkara pertama yang anda perlukan dalam kes ini ialah mendapatkan tatasusunan baharu dengan hanya data ini:

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

Echo min($numbers); // Cetak 5 echo max($nombor); // Cetakan 50

Ini melengkapkan kerja dengan tatasusunan dalam PHP. Jika tiba-tiba struktur tatasusunan anda berbeza dan anda tidak tahu cara memprosesnya, tanya soalan yang sesuai dalam ulasan, saya akan cuba membantu anda.

Mencari nilai terbesar dan terkecil tatasusunan satu dimensi dalam JavaScript

Tidak seperti PHP, jenis tatasusunan dalam JavaScript adalah lebih mudah, dan tatasusunan satu dimensi yang mudah akan kelihatan seperti ini:

Var my_array = ;

Tiada indeks ditunjukkan di sini. Untuk mencari nilai maksimum dan minimum dalam tatasusunan ini, kami akan menulis dua fungsi mudah kami sendiri:

Tatasusunan fungsiMax(tatasusunan) ( tatasusunan kembali.mengurangkan(fungsi(a, b) ( kembalikan Math.max(a, b); )); ) tatasusunan fungsiMin(tatasusunan) ( tatasusunan kembali.mengurangkan(fungsi(a, b) ( kembalikan Math.min(a, b); )); )

yang digunakan untuk mencari nilai yang kita perlukan. Penggunaannya juga mudah:

Makluman(arrayMax(my_array)); // Print 74 alert(arrayMin(my_array)); // Cetakan 2

Dalam kes ini, nombor "2" dan "74" akan dipaparkan pada skrin sebagai nilai minimum dan maksimum tatasusunan.

Mencari nilai terbesar dan terkecil tatasusunan berbilang dimensi dalam JavaScript

Tatasusunan berbilang dimensi dalam JavaScript adalah sama mudah, dan ia kelihatan seperti ini:

Var my_array = [ , , ];

Mari cuba cari maksimum dan minimum di sini. Sebagai permulaan, kami akan menulis fungsi yang, mengikut skema yang telah kami kenali, kami akan mewakili tatasusunan ini sebagai satu dimensi:

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

Dan menggunakan objek " Matematik"kami mendapat nilai yang kami perlukan:

Var min = Math.min.apply(null, out_array); // Dapatkan 2 var max = Math.max.apply(null, out_array); // Dapatkan amaran 74 (maks); // Cetak 74 pada skrin

Malah, bukannya objek " Matematik“Anda boleh menggunakan fungsi kami yang digunakan dalam versi dengan tatasusunan satu dimensi, tetapi supaya anda memahami bahawa sebarang masalah boleh diselesaikan dalam beberapa cara - di sini saya telah memberikan penyelesaian yang sedikit berbeza.

Nah, mengikut tradisi - bonus kecil. Mari kita pertimbangkan satu lagi tatasusunan multidimensi dengan struktur berikut:

Var my_array = [["Satu", "2018-03-19", 5], ["Dua", "2018-03-19", 50], ["Tiga", "2018-03-19", 25 ], ];

Seperti yang kita dapat lihat, nilai berangka dalam setiap tatasusunan berada di tempat ketiga. Mari tulis beberapa kod dan dapatkan nilai yang sepadan daripada hanya data ini:

Var min = +Infiniti; var max = -Infiniti; my_array.forEach(function(item) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ item; // Mencari nilai maksimum ) )); makluman(min+" "+maks); // Paparkan keputusan pada skrin

Itu sahaja. Jangan lupa untuk menyokong projek ini. Banyak perkara menarik menanti anda!

(PHP 4, PHP 5, PHP 7)

min - Mencari nilai terkecil

Penerangan

Jika hanya satu hujah diluluskan - susunan nombor, min() mengembalikan yang terkecil daripada mereka. Jika hujah pertama ialah integer atau apungan, maka mesti ada sekurang-kurangnya satu lagi. Dalam kes ini fungsi min() akan mengembalikan yang terkecil daripada mereka.

Komen:

Nilai pelbagai jenis dibandingkan menggunakan peraturan perbandingan standard. Sebagai contoh, rentetan bukan angka ( tali ) akan dibandingkan dengan integer ( integer ) seolah-olah sama 0 , tetapi beberapa baris ( tali ) akan dibandingkan mengikut abjad. Nilai pulangan akan mengekalkan jenis asal pembolehubah, tanpa penukaran.

Kembalikan nilai

Fungsi min() mengembalikan nilai parameter yang dianggap "paling kecil" mengikut peraturan perbandingan standard. Jika beberapa nilai jenis yang berbeza adalah sama antara satu sama lain (iaitu. 0 Dan "abc"), maka yang pertama akan dikembalikan.

Contoh

Contoh #1 Contoh penggunaan min()

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

// Rentetan "hello", jika dibandingkan dengan int, dianggap sebagai 0
// Oleh kerana kedua-dua nilai adalah sama, susunan parameter menentukan hasilnya
echo min(0, "hello"); // 0
echo min ("hello" , 0 ); // hello

// Di sini kita bandingkan -1< 0, поэтому -1 является наименьшим значением
echo min ("hello" , - 1 ); // -1

// Apabila membandingkan tatasusunan dengan panjang yang berbeza, min akan mengembalikan yang lebih pendek
$val = min (array(2 , 2 , 2 ), array(1 , 1 , 1 , 1 )); // tatasusunan(2, 2, 2)

// Berbilang tatasusunan yang sama panjang dibandingkan dari kiri ke kanan
// untuk contoh ini: 2 == 2, tetapi 4< 5
$val = min (array(2 , 4 , 8 ), array(2 , 5 , 1 )); // tatasusunan(2, 4, 8)

// Jika tatasusunan dan bukan tatasusunan dibandingkan, tatasusunan itu tidak akan dikembalikan
// kerana tatasusunan dianggap lebih besar daripada semua nilai lain
$val = min ("rentetan" , tatasusunan(2 , 5 , 7 ), 42 ); //tali

// Jika satu hujah adalah NULL atau boolean, ia akan dibandingkan dengan yang lain
// menggunakan peraturan FALSE< TRUE, учитывая остальные типы аргументов
// Dalam contoh yang diberikan, -10 dan 10 dianggap sebagai BENAR
$val = min (- 10 , SALAH , 10 ); // SALAH
$val = min (- 10 , NULL , 10 ); // NULL

// sebaliknya, 0 dianggap sebagai PALSU, jadi ia adalah "kurang" daripada BENAR
$val = min(0, BENAR); // 0
?>