Menyortir array di php. Operasi Array

Jelas bahwa mungkin ada kebutuhan untuk melakukan hal tersebut mengurutkan array berdasarkan nilai kunci. Misalnya, jika kita punya susunan data tentang buku seperti contoh diatas, maka kemungkinan besar kita akan menginginkannya menyortir buku berdasarkan nama penulis. Untuk melakukan hal ini di PHP Anda juga tidak perlu menulis banyak baris kode - Anda cukup menggunakan fungsinya ksort() Untuk penyortiran menaik (urutan langsung) penyortiran) atau krsort()- Untuk penyortiran menurun (urutan terbalik penyortiran). Sintaks fungsi-fungsi ini sekali lagi mirip dengan sintaks fungsi menyortir().

$buku = array("Pushkin"=>"Ruslan dan Lyudmila",

"Tolstoy" => "Perang dan Damai",

"Lermontov" => "Pahlawan zaman kita");

// mengurutkan array,

// menyimpan nilai kunci

print_r($buku);

Contoh 7.9. Mengurutkan array berdasarkan kunci (html , txt )

Array ([Lermontov] => Pahlawan zaman kita

[Pushkin] => Ruslan dan Lyudmila

[Tolstoy] => Perang dan Damai)

Penyortiran menggunakan fungsi yang ditentukan pengguna

Selain dua cara sederhana mengurutkan nilai array(descending atau ascending) PHP menawarkan pengguna kemampuan untuk menetapkan kriteria penyortiran data. Kriteria ditentukan menggunakan fungsi yang namanya ditentukan sebagai argumen untuk fungsi khusus penyortiranmenggunakan() atau uksort(). Dari nama fungsinya saja sudah bisa ditebak menggunakan()macamnilai-nilai elemen susunan, A uksort()nilai-nilaikunci susunan menggunakan fungsi yang ditentukan pengguna. Kedua fungsi mengembalikan nilai true jika penyortiran lulus dengan sukses, dan salah jika sebaliknya. Sintaksnya adalah sebagai berikut:

usort (array, fungsi pengurutan)

uksort (array, fungsi pengurutan)

Tentu saja Anda tidak bisa mengurutkan susunan menggunakan fungsi khusus apa pun. Fungsi ini harus memenuhi kriteria tertentu untuk memungkinkan perbandingan elemen susunan. Bagaimana seharusnya fungsi penyortiran disusun? Pertama, harus ada dua argumen. Di dalamnya penerjemah akan mengirimkan berpasangan nilai-nilai elemen untuk fungsi menggunakan() atau kunci susunan untuk fungsi uksort(). Kedua, fungsi penyortiran harus mengembalikan:

    bilangan bulat kurang dari nol jika argumen pertama lebih kecil dari argumen kedua;

    suatu bilangan sama dengan nol jika kedua argumennya sama;

    angka yang lebih besar dari nol jika argumen pertama lebih besar dari argumen kedua.

Sama seperti fungsi lainnya penyortiran, untuk fungsi menggunakan() ada analog yang tidak berubah nilai-nilaikunci, - fungsi usort().

Contoh 7.10. Katakanlah kita punya susunan, berisi informasi tentang karya sastra seperti judul, pengarang, dan tahun penciptaan. Kami ingin mengatur buku berdasarkan tanggal pembuatan.

// tampilan arraynya seperti ini:

$buku = array("Pahlawan zaman kita" =>

susunan ("Lermontov", 1840),

"Ruslan dan Lyudmila" => array("Pushkin",1820),

"Perang dan Damai" => susunan ("Tolstoy", 1863),

"Bodoh" => array("Dostoevsky",1868));

/* Anda tentu saja dapat menulis ulang array ini

berbeda, membuat tahun penerbitan, misalnya,

indeks, tetapi jauh lebih mudah untuk menulis sendiri

fungsi untuk menyortir */

uasort($buku,"cmp");

// mengurutkan array menggunakan fungsi cmp

foreach ($buku sebagai $kunci => $buku) (

gema "$buku: \"$kunci\"
";

fungsi cmp($a,$b)(

// fungsi yang menentukan metode pengurutan

jika ($a< $b) return -1;

elseif ($a==$b) mengembalikan 0;

Contoh 7.10. Menyortir menggunakan fungsi khusus (html , txt )

Hasilnya kita mendapatkan:

Pushkin: "Ruslan dan Lyudmila"

Lermontov: "Pahlawan zaman kita"

Tolstoy: "Perang dan Damai"

Dostoevsky: "Bodoh"

Kami menerapkan fungsi kami sendiri penyortiran ke semua elemen susunan. Selanjutnya, mari kita lihat caranya terapkan fungsi khusus lainnya ke elemen array.

Menerapkan fungsi ke semua elemen array

Fungsi array_walk(array, fungsi [, data]) menerapkan fungsi fungsi yang dibuat pengguna ke semua elemen susunan array dan mengembalikan nilai true jika operasi berhasil dan false jika sebaliknya.

Fungsi yang ditentukan pengguna biasanya memiliki dua argumen, yang diteruskan secara bergantian arti Dan kunci setiap elemen susunan. Namun jika saat memanggil fungsi tersebut larik_berjalan() argumen ketiga ditentukan, maka akan dianggap sebagai arti argumen ketiga dari fungsi yang ditentukan pengguna, yang artinya ditentukan oleh pengguna. Jika fungsi pengguna memerlukan lebih banyak argumen daripada yang diteruskan, maka setiap kali fungsi tersebut dipanggil larik_berjalan() peringatan akan dikeluarkan.

Jika Anda perlu bekerja dengan nyata nilai-nilai susunan, dan bukan dengan salinannya, Anda harus meneruskan argumen ke fungsi dengan referensi. Namun, perlu diingat bahwa Anda tidak dapat menambah atau menghapus elemen susunan dan mengambil tindakan yang mengubah diri sendiri susunan, karena dalam hal ini hasil pekerjaannya larik_berjalan() dianggap tidak pasti.

$buku1 = susunan(

"A.S. Pushkin" => "Ruslan dan Lyudmila",

"L.N. Tolstoy" => "Perang dan Damai",

"M.Yu. Lermontov" => "Pahlawan zaman kita");

fungsi coba_berjalan($val,$kunci,$data)(

gema "$data \"$val\" menulis $kunci
";

// fungsi $book1 try_walk

array_walk($books1,"try_walk","Novel");

Contoh 7.11. Menerapkan fungsi ke semua elemen array (html , txt )

Novel "Ruslan dan Lyudmila" ditulis oleh A.S. Pushkin

Novel "Perang dan Damai" ditulis oleh L.N. tebal

Novel "Pahlawan Zaman Kita"

ditulis oleh M.Yu. Lermontov

Perhatikan bahwa kami tidak berubah nilai-nilai pada elemen susunan. Untuk mengubahnya, perlu dilakukan transmisi nilai-nilai ke dalam variabel $var dari fungsi try_walk dengan referensi.

$buku1 = susunan(

"A.S. Pushkin" => "Ruslan dan Lyudmila",

"L.N. Tolstoy" => "Perang dan Damai",

"M.Yu. Lermontov" => "Pahlawan zaman kita");

// buat fungsi yang kita inginkan

// berlaku untuk elemen array

fungsi coba_berjalan(&$val,$kunci)(

$kunci = "

$val = "Nama: \"" .$val ."\"

";

// berlaku untuk semua elemen array

// fungsi $book1 try_walk

array_walk($buku1,"coba_jalan");

print_r($buku1);

Contoh 7.12. Menerapkan fungsi ke semua elemen array. Pilihan 2 (html , txt )

Sebagai hasil dari skrip yang kami dapatkan:

Judul: "Ruslan dan Lyudmila"

Judul: "Perang dan Damai"

Judul: "Pahlawan Zaman Kita"

Array ([A.S. Pushkin] =>

Judul: "Ruslan dan Lyudmila"

[L.N. tebal] =>

Judul: "Perang dan Damai"

[M.Yu. Lermontov] =>

Judul: "Pahlawan Zaman Kita")

Seleksi sub-ray

fungsi array_slice

Sejak susunan adalah sekumpulan elemen, kemungkinan besar Anda perlu memilih beberapa subset darinya. PHP memiliki fungsi untuk tujuan ini array_slice.

Sintaksnya adalah:

array_slice(array,

nomor_elemen [, panjang]) Fungsi ini mengalokasikan subarray panjang panjang susunan susunan sebuah array yang dimulai dari elemen yang nomornya ditentukan oleh parameter element_number. susunan.

Element_number positif menunjukkan nomor seri elemen relatif terhadap awal

, negatif – ke nomor elemen dari akhir

$arr = susunan(1,2,3,4,5);

$sub_arr = array_slice($arr,2);

print_r($sub_arr);

akan menampilkan Array ( => 3 =>4 => 5),

$arr = susunan(1,2,3,4,5);

itu. subarray yang terdiri dari elemen

$sub_arr = array_slice($arr,-2);

// akan menampilkan Array ( => 4 => 5),html , txt )

// yaitu. subarray elemen 4, 5 array_slice Contoh 7.13. Menggunakan fungsi array_slice() ( Jika Anda mengatur parameter panjang saat menggunakan, maka itu akan terjadi susunan subarray dialokasikan

Element_number positif menunjukkan nomor seri elemen relatif terhadap awal

, memiliki elemen sebanyak yang ditentukan oleh parameter ini. Panjangnya juga bisa negatif. Dalam hal ini, penerjemah akan menghapus dari akhir

jumlah elemen sama dengan modulus parameter panjang.

$sub_arr = array_slice($arr, 2, 2);

// berisi array elemen 3, 4

$sub = array_slice($arr,-3, 2);

// juga berisi array elemen 3, 4

$sub1 = array_slice($arr,0, -1);

// berisi array

// elemen 1, 2, 3, 4

$sub2 = array_slice($arr,-4, -2);html , txt )

// berisi array elemen 2, 3

Contoh 7.14. Menggunakan fungsi array_slice(). Pilihan 2 ( fungsi array_chunk Ada fungsi lain yang mirip dengan array_iris() susunan- Ini

array_chunk()

.

Dia rusak Ada fungsi lain yang mirip dengan menjadi beberapa subarray dengan panjang tertentu. Sintaksnya adalah: susunan, yang elemennya mewakili subarray yang dihasilkan. Jika Anda mengatur opsi simpan kunci jika benar, maka mereka akan disimpan saat dibelah kunci asli susunan. Jika tidak kunci elemen digantikan oleh indeks numerik yang dimulai dari nol.

Contoh 7.15. Kami memiliki daftar undangan, diformat sebagai susunan nama belakang mereka. Kami memiliki meja untuk tiga orang. Oleh karena itu, Anda perlu membagi semua undangan dalam kelompok yang terdiri dari tiga orang.

$orang = array("Ivanov", "Petrov",

"Sidorova", "Zaitseva", "Volkova");

$tiga kali lipat = array_chunk($orang,3);

// membagi array menjadi subarray

// masing-masing tiga elemen

foreach ($tiga kali lipat dari $k => $tabel)(

// cetak tiga kali lipat yang dihasilkan

echo "Di meja nomor $k duduk:

    ";

    foreach ($tabel sebagai $pers)

    gema "

  • $pers";

    gema "

";

Contoh 7.15. Penggunaanfungsiarray_potongan() (html , txt )

Hasilnya kita mendapatkan:

di meja nomor 0 duduk:

Sidorova

di meja nomor 1 duduk:

Zaitseva

Volkova

Jumlah elemen array

Di bagian ini kami akan memperkenalkan fungsi yang menghitung jumlah semua elemen array. Tugas perhitungan itu sendiri jumlah nilai array sangat sederhana. Tetapi mengapa menulis kode yang sama berulang kali jika Anda dapat menggunakan fungsi yang dibuat khusus dan selalu tersedia. Fungsi ini disebut, seperti yang Anda duga, jumlah_array(). susunan,Dan hanya nama yang diteruskan sebagai parameter jumlah nilai elemen

yang perlu dihitung. Sebagai contoh penggunaan fungsi ini, kami akan memberikan solusi untuk masalah yang lebih kompleks dari sekedar perhitungan jumlah elemen Pilihan 2 (. Contoh ini juga mengilustrasikan penggunaan fungsi tersebut

, yang telah kita bahas sedikit sebelumnya. Contoh 7.16. susunan Biarkan itu diberikan bilangan asli. Anda perlu menemukan nomor di dalamnya sedemikian rupa jumlah elemen di sebelah kanannya sama jumlah elemen

ke kirinya.

//array ditentukan oleh fungsi array

$arr = susunan(2,1,3,4,5,6,4);

// mengulang setiap elemen array $arr.

// Di dalam loop, kunci array saat ini

// terkandung dalam variabel $k,

// nilai saat ini ada di variabel $v

foreach ($arr sebagai $k => $val)(

// sintaks array array_slice (

larik array,int offset [,int panjang])

// array_slice mengalokasikan subarray

// panjang panjang dalam array,

// dimulai dari elemen offset.

$out_next = array_slice($arr,$p);

// datang setelah yang sekarang

$keluar_prev = array_slice($arr,0,$k);

// mengambil array elemen,

// datang sebelum yang sekarang

// fungsi array_sum campuran (array array)

// menghitung jumlah array elemen array

$jumlah_berikutnya = jumlah_array($keluar_berikutnya);

$prev_sum = array_sum($keluar_prev);

// jumlah elemen setelahnya, lalu keluaran

// nilai elemen saat ini

jika ($jumlah_berikutnya==$jumlah_sebelumnya)

gema "nilai:$val";

// kamu bisa melihat apa itu

// mempertimbangkan array pada setiap langkah

// print_r($keluar_berikutnya); gema "
";

// print_r($keluar_prev);

// gema "$jumlah_berikutnya, $jumlah_sebelumnya
";

gema "


";

Contoh 7.16. Program untuk mencari suatu bilangan yang jumlah elemen di sebelah kanannya sama dengan jumlah elemen di sebelah kirinya ( html , txt )

Kesimpulan

Jadi, mari kita rangkum. Dalam kuliah ini, kita mengeksplorasi sejumlah fungsi yang membuat bekerja dengan array data. Kami telah meninjau fungsinya untuk mencari nilai di antara elemen array; fungsi untuk mengurutkan elemen array menurut mereka nilai-nilai, dan oleh kunci; fungsi yang memungkinkan menerapkan fungsi yang dibuat pengguna ke semua elemen array . Selain itu, kami mempelajari fungsinya memilih subarray susunan dari elemen , dan fungsi yang menghitung jumlah semua elemen array array. Penggunaan semua fungsi ini telah ditunjukkan melalui contoh. Semua fungsi untuk digunakan

tersedia tanpa pengaturan konfigurasi PHP apa pun, dan Anda dapat menggunakannya dengan bebas. Jadi, sebelum menemukan kembali rodanya, lihatlah manual bahasa PHP: – ​​sangat mungkin seseorang telah melakukan ini sebelum Anda.

Dan berbicara dengan Anda tentang berbagai “barang” yang mungkin Anda perlukan saat menyelesaikan solusi yang sudah jadi. Dan salah satunya yang secara pribadi cukup sering saya temui di tempat kerja adalahpenyortiran susunan.

php

Pertemuan yang sering terjadi ini disebabkan oleh fakta bahwa, seperti yang diperlihatkan oleh praktik, orang-orang suka mengubah urutan tampilan objek di situs web mereka dari waktu ke waktu, untuk perubahan - baik itu produk di toko online, pesan pengguna di forum , atau blok informasi di situs kartu nama.

Bagi pemula, saya hanya akan mengingatkan ketentuan utama dalam bahasa yang paling mudah dimengerti. Oleh karena itu, jika Anda tidak menganggap diri Anda salah satunya, Anda bisa langsung beralih ke contoh masalah dan cara mengatasinya.

Sedikit teori tentang array php

PHP adalah bahasa pemrograman sisi server. Berbasis server, karena skrip yang diluncurkan oleh pengguna melalui antarmuka web (browser Internet) disimpan dan dijalankan di server.

Skrip PHP disembunyikan dari pandangan pengguna rata-rata. Di jendela browser Anda, Anda hanya melihat hasil eksekusinya.

Array bisa statis, dinamis, heterogen, dll. (seluruh ilmu) 🙂 Untuk mengatasinya, klasifikasi menjadi satu dimensi dan multidimensi sudah cukup.

Agar Anda dapat memahami perbedaan di antara keduanya, cukup memberikan gambaran tentang strukturnya.

Array php satu dimensi:

Larik ( => 1 => 2 => 3)

Array multidimensi PHP:

Larik ( => Larik ( => 1) => Larik ( => 2) => Larik ( => 3))

Apakah Anda memperhatikan? Jika tidak, perhatikan elemen array multidimensi php. Mereka sendiri adalah susunan. Itu. Array multidimensi adalah kumpulan array. Tingkat sarangnya bisa sebesar yang diinginkan.

Sekarang saya pikir sudah jelas :)

Saya juga ingin menyoroti secara terpisah konsep array asosiatif di PHP. Dalam kehidupan nyata, hal tersebut tidak sesering kejadian biasa, namun masih terjadi.

Singkatnya, ini adalah array di mana kunci dan nilai elemen array terkait erat dan ada hubungan logis tertentu di antara keduanya yang tidak dapat diputuskan dalam keadaan apa pun.

Contoh array asosiatif adalah konstruksi berikut:

Array ( => 12 [nama lengkap] => Ivanov Ivan Ivanovich [skor_rata-rata] => 3)

Seperti yang Anda lihat, di sini nilai kunci dan nilai elemen array terkait erat dan hubungan ini tidak boleh diputus. Oleh karena itu, array asosiatif sering disebut “kamus” atau “direktori”.

Oleh karena itu, fitur ini harus diperhitungkan ketika mengurutkan array PHP, karena Tidak semua metode cocok untuk struktur seperti itu.

Di PHP sendiri, array dibuat dengan dua cara:

  1. $buku = array('ABC', 'Primer', 'Kamus'); atau $books = array('azb' => 'ABC', 'buk' => 'Primer', 'slov' => 'Dictionary'); Opsi kedua digunakan ketika elemen perlu secara eksplisit menunjukkan bidang kunci (relevan untuk array asosiatif). Jika Anda tidak menentukannya, kunci elemen array akan berupa angka secara default. Mulai dari 0 (nol).
  2. $buku = 'ABC'; $buku = 'Buku ABC'; $buku = 'Buku ABC';

Dalam kedua kasus tersebut, $books akan berupa array. Jadi, jika Anda menemukan konstruksi seperti itu dalam kode situs Anda, itu bukan lagi sesuatu yang tidak dapat Anda pahami :)

Jika Anda ingin mempelajari array PHP lebih detail, saya merekomendasikan video berikut:

Izinkan saya mengingatkan Anda bahwa untuk melihat struktur array di layar Anda, setelah mendeklarasikan array dalam kode situs, Anda perlu menulis konstruksi berikut:

Gema"

"; print_r(array_variable); mati();

Jika variabel yang Anda cetak adalah array, teks akan dimulai dengan baris berikut:

Himpunan(...

Dan beberapa kata lagi tentang topik artikel kami - mengurutkan arraypenyortiran susunan.

Seperti yang dapat Anda pahami, data dalam array terstruktur dan elemen-elemennya disusun dalam urutan tertentu. Untuk mengubahnya, kita hanya perlu pengurutan array PHP, yang diimplementasikan dengan fungsi bahasa yang sudah jadi.

Oleh karena itu, yang perlu kita lakukan hanyalah memanggil fungsi yang diperlukan setelah mendeklarasikan array, dan menetapkannya sebagai parameter.

Mari beralih ke ikhtisar fungsi itu sendiri.

fungsi penyortiran array php

Daftar lengkapnya disajikan dalam dokumentasi resmi bahasa php:

Untuk mengurutkan array PHP menggunakan fungsi tertentu, Anda perlu memanggilnya setelah mendeklarasikan array dan mengisinya dengan nilai, menentukan array kami sebagai parameter. Misalnya:

$mobil = array("Toyota", "Mazda", "Mitsubishi"); sort($mobil);

Mari kita pertimbangkan secara singkat fungsi masing-masingnya. Fungsi-fungsi tersebut akan ditentukan dalam format pemanggilannya dalam kode, mis. "nama(parameter1, parameter2, ...);".

Jangan lupa untuk memberi tanda “;” setelah memanggil fungsi tersebut, karena tanpanya, pesan kesalahan yang bagus akan muncul di layar :)

Sebagai contoh ilustratif, mari kita ambil array satu dimensi sederhana di mana kunci dan nilai tidak akan diurutkan sehingga hasil eksekusi fungsi lebih visual dan mudah dipahami.

Larik ( => 11 => 18 => 9)

Jadi, bagaimana Anda bisa mengurutkan array dalam urutan yang diinginkan di PHP?

Berfungsi untuk mengurutkan array php sederhana berdasarkan nilai

Jika Anda lebih suka menonton materi video daripada membaca, saya sarankan Anda menonton video ini, yang dengan jelas dan jelas menunjukkan pengoperasian fungsi pengurutan array PHP dari blok ini:

Jika setelah ini Anda masih memiliki pertanyaan, Anda dapat menemukan informasi lebih detail pada setiap fungsi di bawah ini.

sort($array, $flag);- salah satu fungsi paling sederhana dan populer. Memungkinkan Anda mengurutkan array dalam urutan menaik di php, dengan mempertimbangkan nilai elemen, mis. mereka akan diurutkan dari nilai terkecil hingga terbesar. Dibutuhkan variabel array dan salah satu tanda pengurutan sebagai parameter, yang memungkinkan Anda mengubah perilaku pengurutan.

Daftar bendera:

  • SORT_REGULAR – elemen dibandingkan tanpa mengubah tipe
  • SORT_NUMERIC – elemen dibandingkan sebagai angka
  • SORT_STRING – elemen dibandingkan sebagai string
  • SORT_LOCALE_STRING – perbandingan string, tetapi dengan mempertimbangkan lokal saat ini.
  • SORT_NATURAL – perbandingan string elemen, dengan mempertimbangkan tatanan alaminya (seperti natsort)
  • SORT_FLAG_CASE – pengurutan elemen array php yang tidak membedakan huruf besar dan kecil (dapat dikombinasikan dengan SORT_STRING atau SORT_NATURAL bitwise OR).

Namun, dalam sebagian besar kasus, hasil eksekusi fungsi tersebut benar bahkan tanpa tanda klarifikasi ini. Secara default (jika tidak ada yang ditentukan) SORT_REGULAR akan digunakan.

Array pengujian kita setelah memanggil fungsi sort() akan terlihat seperti ini:

Larik ( => 9 => 11 => 18)

Seperti yang Anda lihat, setelah mengurutkan array berdasarkan nilai, nilai kuncinya juga berubah, karena sortir berfungsi tanpa menjaga hubungan nilai kunci, seperti yang dinyatakan dalam dokumentasi resmi php.

Oleh karena itu, opsi ini cocok untuk sebagian besar kasus.

rsort($array, $bendera);— suatu fungsi yang merupakan semacam antagonis. Antagonis, karena mengurutkan array dengan cara yang sama, hanya saja tidak dalam urutan menaik, tetapi dalam urutan menurun, yaitu. Elemen array php dengan nilai terbesar akan didahulukan.

Anda juga dapat meneruskan dua parameter ke dalamnya: array itu sendiri dan flag pengurutan, dan, seperti sort, ini lebih cocok untuk array satu dimensi. Array pengujian kami setelah memanggil fungsi ini akan mengambil bentuk berikut:

Larik ( => 18 => 11 => 9)

bermacam-macam($array, $bendera); adalah fungsi PHP untuk mengurutkan array berdasarkan nilai, mekanismenya juga sangat mirip dengan sort.

Satu-satunya pengecualian adalah memungkinkan Anda mengurutkan array php berdasarkan nilai elemennya sambil mempertahankan hubungan nilai kunci.

Oleh karena itu, fitur ini sangat bagus untuk mengurutkan array asosiatif php, yaitu struktur di mana hubungan ini logis dan penting.

Unsur-unsur tersebut akan disusun dalam urutan menaik, karena... ini memungkinkan Anda untuk mengurutkan array asosiatif PHP berdasarkan nilai sambil mempertahankan kuncinya.

Anda juga dapat meneruskan dua parameter. Array pengujian kami akan terlihat seperti ini:

Larik ( => 9 => 11 => 18)

Seperti yang Anda lihat, perbedaan dari sort hanya terletak pada penyimpanan kunci nilai yang digunakan untuk mengurutkan array PHP. Ini disebut menjaga hubungan nilai-kunci, yang sangat penting ketika mengurutkan array asosiatif PHP.

arsort($array, $bendera);- fungsi php lain untuk mengurutkan array berdasarkan nilai. Macam antagonis.

Ia bekerja dengan prinsip yang sama dengan fungsi yang disebutkan, hanya array php yang akan diurutkan dalam urutan menurun dalam kasus ini. Juga merupakan pilihan bagus saat mengurutkan array asosiatif PHP.

Setelah memanggil fungsi ini, contoh kita akan terlihat seperti ini:

Larik ( => 18 => 11 => 9)

Fungsi penyortiran array php tingkat lanjut berdasarkan nilai

Blok fungsi ini, tidak seperti yang sebelumnya, yang memungkinkan Anda mengubah urutan dalam urutan menurun/menaik, akan memungkinkan Anda menambahkan variasi dan menyusun elemen dalam urutan berbeda selain yang “tradisional”.

Fitur ini membuatnya cocok untuk memecahkan berbagai masalah non-standar, terkadang sangat menarik :)

natsort($array);— fungsi ini menambah variasi pada rangkaian solusi sejenis, karena mekanisme operasinya pada dasarnya berbeda dari mereka. natsort hanya memiliki satu parameter masukan - ini adalah larik yang dapat diurutkan, yang nilainya akan disusun dalam urutan yang familiar bagi manusia. Algoritme ini disebut “pengurutan alami”, yang dalam bahasa Rusia berarti “urutan alami”. Untuk memperjelas arti pernyataan ini, kita akan mengambil array lain sebagai contoh:

Larik ( => murid5 => murid1 => murid10)

Selain itu, fungsi natsort menjaga hubungan nilai kunci. Oleh karena itu, kami akan membandingkan karyanya dengan asort yang semirip mungkin dengannya. Setelah memanggil yang terakhir, array kita akan mengambil bentuk berikut:

Larik ( => murid1 => murid10 => murid5)

Jika Anda memanggil natsort, array yang dihasilkan akan seperti ini:

Larik ( => murid1 => murid5 => murid10)

Saya rasa Anda sekarang dapat melihat perbedaannya dan prinsip pengoperasian natsort akan jelas bagi Anda :-)

acak($array); adalah fungsi yang luar biasa dan sangat berguna untuk mengacak array PHP dan menempatkan elemen-elemennya dalam urutan acak.

Sangat nyaman ketika Anda perlu mengatur produk toko online dalam kategori atau halaman lain dalam urutan acak, atau ketika mengunjungi situs web kartu nama, menampilkan blok informasi yang berbeda kepada pengguna setiap kali dalam urutan yang berbeda.

Dalam kasus ini, hubungan nilai kunci tidak dipertahankan. Artinya, array yang kita gunakan pada contoh sebelumnya, bagi saya pribadi, berbentuk:

Larik ( => murid10 => murid5 => murid1)

Selain itu, setelah setiap pemanggilan fungsi, urutan elemen akan berbeda.

Fungsi-fungsi yang kita bahas tadi cukup sederhana dan mekanisme pengoperasiannya jelas. Sebuah array dilewatkan sebagai parameter, yang isinya perlu diurutkan berdasarkan nilai elemennya, serta tanda yang dapat mengubah perilaku penyortiran (Anda dapat dengan mudah melakukannya tanpanya).

Ini cukup populer di kalangan programmer karena... memungkinkan Anda memecahkan masalah apa pun yang terkait dengan pengurutan (menggunakan berbagai algoritma) menggunakan fungsinya.

Salah satu tugas tersebut adalah penyortiran susunan oleh bidang yang diperlukan.

Untuk menunjukkan dengan jelas cara kerja fungsi berikut, mari kita ambil array berikut sebagai contoh:

Larik ( => Larik ( => 32) => Larik ( => 11) => Larik ( => 27))

Seperti yang Anda lihat, ini multidimensi, karena... elemennya adalah array, strukturnya identik: semuanya memiliki bidang dengan kunci “id”. Dan sekarang tugas kita adalah mengurutkan elemen-elemen ini dalam urutan menaik, yaitu. sehingga elemen-elemen pada array utama disusun sesuai dengan nilai field pada subarray.

Saya harus mengatakan, tugas yang cukup umum. Fungsi-fungsi berikut akan membantu kami menyelesaikannya:

usort($array, 'fungsi');— Fungsi PHP untuk mengurutkan array multidimensi berdasarkan bidang yang diinginkan.

Memungkinkan Anda mengurutkan elemen array php tanpa mempertahankan hubungan nilai kunci sesuai dengan fungsi yang ditentukan pengguna, yang namanya diteruskan sebagai parameter kedua saat memanggil usort.

Fungsinya sendiri dijelaskan secara terpisah. Mengenai contoh kita, untuk mengurutkan elemen array php multidimensi berdasarkan bidang ['id'] dalam urutan menaik, fungsi pengguna akan terlihat seperti ini:

Fungsi myCmp($a, $b) ( if ($a["id"] == $b["id"]) mengembalikan 0; mengembalikan $a["id"] > $b["id"] ? 1 : -1;

Yang sekarang kita perlukan untuk mulai menyortir adalah memanggil usort($array, 'myCmp'); di tempat yang diperlukan dalam kode. Parameter pertama menentukan nama variabel array.

Hasilnya, kami mendapatkan yang berikut:

Larik ( => Larik ( => 11) => Larik ( => 27) => Larik ( => 32))

uasort($array, 'fungsi');— fungsi PHP lain untuk mengurutkan array multidimensi berdasarkan bidang yang diinginkan.

Cara kerjanya mirip dengan usort, namun mempertahankan hubungan kunci-nilai, sehingga fungsi ini cocok untuk mengurutkan array asosiatif multidimensi.

Fungsi kustom untuk contoh kita akan sama. Hasil pelaksanaannya akan terlihat seperti ini:

Larik ( => Larik ( => 11) => Larik ( => 27) => Larik ( => 32))

Untuk mengubah urutan elemen dan membuat beberapa transformasi data tambahan, Anda perlu mengedit fungsi pengguna, seperti yang sudah Anda duga :)

Misalnya, jika array Anda, yang merupakan elemen dari array asli, berisi bidang ['nama'] dengan nilai string, maka fungsi khusus untuk mengurutkan array php multidimensi berdasarkan bidang ini dalam urutan menaik akan terlihat seperti ini:

Fungsi myCmp($a, $b) ( if (strcasecmp($a["nama"], $b["orang"]["nama"]) == 0) mengembalikan 0; mengembalikan strcasecmp($a["nama "], $b["nama"]) > 0 ? 1: -1; )

Menyortir array PHP menggunakan fungsi khusus bukanlah pilihan termudah, tetapi sangat fleksibel dalam penyesuaian, dan jika Anda menguasainya, itu akan menjadi solusi favorit Anda.

array_multisort($array1, $array2, $bendera);— untuk yang terakhir saya menyimpan fungsi PHP yang paling buruk dan tidak jelas untuk mengurutkan array. Sebagai parameter masukan, dibutuhkan dua larik dan tanda pengurutan yang sama yang dapat ditentukan dalam fungsi mirip pengurutan. array_multisort berfungsi sebagai berikut: parameter pertama adalah array yang akan diurutkan, urutan array pertama ditunjukkan sebagai array kedua, setelah itu array kedua diurutkan dengan cara yang sama seperti array pertama. Alih-alih array yang mewakili urutan, Anda dapat menggunakan konstanta SORT_DESC untuk mengurutkan array dalam urutan menurun dan SORT_ASC dalam urutan menaik. Untuk mengatasi semua kebingungan ini, Anda juga dapat menambahkan tanda pengurutan, yang dapat muncul setelah semua array.

$buku = larik(32, 11, 27); $sort_array = susunan(1, 2, 3); array_multisort($buku, $sort_array);

Dalam contoh ini, saya mengurutkan array satu dimensi sederhana $books menurut array $sort_array. Hasilnya, array pertama mengambil bentuk berikut:

Larik ( => 11 => 27 => 32)

Dan yang kedua menjadi seperti ini:

Larik ( => 2 => 3 => 1)

Artinya, sudah diurutkan menurut yang pertama. Ini peterseli :)

Array_multisort dijelaskan lebih detail dalam video berikut. Di sana Anda juga akan menemukan contoh tambahan penggunaannya:

Dengan menggunakan fungsi ini Anda juga dapat mengurutkan array multidimensi:

$buku = array(array(32), array(11), array(27)); $sort_array = susunan(1, 2, 3); array_multisort($buku, $sort_array);

Array $books akan terlihat seperti ini:

Larik ( => Larik ( => 11) => Larik ( => 27) => Larik ( => 32))

Pada saat yang sama, dalam fungsi ini Anda dapat menentukan beberapa array, mengurutkannya berdasarkan beberapa bidang. Dalam hal ini, hasil pengurutan array sebelumnya akan mempengaruhi array berikutnya, yang pada akhirnya akan mengarah pada pengurutan array terbaru berdasarkan berbagai kriteria.

Ini adalah semacam “bola salju” di PHP.

Saat mengurutkan array PHP menggunakan fungsi ini, hubungan nilai kunci dipertahankan untuk array asosiatif, tetapi tidak untuk array numerik.

Pemrogram yang telah menguji pengoperasian berbagai fungsi mencatat bahwa ketika mengurutkan array multidimensi, array_multisort php menunjukkan hasil yang lebih baik daripada usort.

Tetapi array_multisort tidak akan mampu mengatasi semua tugas yang dapat dilakukan oleh usort. Misalnya sama mengurutkan array multidimensiphp berdasarkan bidang yang wajib diisi. Jadi, dalam setiap kasus, Anda perlu menganalisis peluang keberhasilan Anda saat menggunakan desain tertentu.

Secara pribadi, saya dapat mengatakan bahwa saya sedikit tidak menyukai array_multisort karena kebingungannya dan meningkatnya ketegangan otak saat mencoba membayangkan array yang dihasilkan diurutkan menggunakannya.

Oleh karena itu, saya mencoba untuk tidak menggunakannya kecuali benar-benar diperlukan, memberikan preferensi pada fungsi yang mudah digunakan dan lebih sederhana, yang saya anjurkan agar Anda juga melakukannya :)

Fungsi yang kita bahas sebelumnya memungkinkan Anda mengurutkan array di PHP berdasarkan nilai elemennya. Mari kita bahas tentang bagaimana Anda dapat melakukan tindakan serupa pada kunci elemen.

PHP berfungsi untuk mengurutkan array berdasarkan kunci

Sebelum kita beralih ke ikhtisar fungsi-fungsi dalam grup ini, saya ingin mengatakan bahwa semuanya memiliki satu kesamaan - semuanya menjaga hubungan nilai-kunci. Dan sebenarnya, tidak mungkin sebaliknya, karena... maka tidak akan ada gunanya mereka :)

Inilah kekhasannya. Mari kita lihat setiap fungsi lebih detail.

ksort($array, $bendera);— fungsinya dianalogikan dengan asort, hanya elemen-elemen dalam array yang akan diurutkan bukan berdasarkan nilai, tetapi berdasarkan kunci.

Desain ini memiliki dua parameter masukan: array PHP yang akan diurutkan dan salah satu tanda pengurutan, daftar lengkapnya dapat Anda temukan dalam deskripsi fungsi pengurutan (tidak perlu menggunakannya). Fungsi php ini memungkinkan Anda mengurutkan array dalam urutan menaik.

Untuk mendemonstrasikan cara kerjanya, mari kembali ke contoh yang dijelaskan di awal artikel:

Larik ( => 11 => 18 => 9)

Jika diurutkan menggunakan ksort maka hasilnya akan seperti ini:

Larik ( => 18 => 9 => 11)

Saya pikir semuanya sederhana dan jelas.

krsort($array, $bendera);- Fungsi PHP lainnya untuk mengurutkan array berdasarkan kunci, sangat mirip dengan yang sebelumnya.

Satu-satunya perbedaan adalah ia mengurutkan array php dalam urutan menurun. Artinya, ini merupakan antagonis terhadap ksort, sama seperti rsort untuk menyortir.

Ia juga memiliki dua parameter masukan: larik yang akan diurutkan dan salah satu kunci. Setelah dijalankan, contoh kita akan terlihat seperti:

Larik ( => 11 => 9 => 18)

Saya pikir komentar tidak perlu :)

ukrsort($array, 'fungsi');- analog dari fungsi PHP yang disebutkan sebelumnya untuk mengurutkan array berdasarkan kunci - usort.

Ia bekerja dengan prinsip yang sama: ia mempertahankan hubungan nilai-kunci dan array PHP diurutkan sesuai dengan fungsi yang ditentukan pengguna, yang namanya diteruskan sebagai parameter kedua. Parameter pertama tidak berubah - ini adalah array yang akan diurutkan.

Perbedaan dari usort adalah pengurutan dilakukan berdasarkan kunci elemen.

Untuk mengilustrasikan cara kerja fungsi ini, gunakan contoh berikut:

Larik ( => 40 => 0 => 10)

Misalnya, kita perlu mengurutkan array php berdasarkan kunci dalam urutan menaik. Dalam hal ini, fungsi pengguna akan terlihat seperti ini:

Fungsi myCmp($a, $b) ( if ($a == $b) mengembalikan 0; mengembalikan $a< $b ? 1: -1; }

Hasilnya, array kita akan mengambil bentuk berikut:

Larik ( => 0 => 10 => 40)

Keuntungan yang jelas dari penggunaan fungsi ini adalah dapat digunakan untuk mengurutkan array PHP berdasarkan beberapa kriteria atau algoritma yang tidak biasa.

Izinkan saya mengingatkan Anda bahwa Anda perlu menggunakannya hanya ketika kunci elemen array membawa makna semantik. Jika tidak, lebih baik menggunakan usort atau fungsi sederhana lainnya.

Artikel kami telah berakhir (sukai jika Anda sudah membaca sejauh ini) :)

Di dalamnya, saya mencoba menjelaskan secara sederhana dan sekaligus jelas dan lengkap semua cara yang mungkin untuk mengurutkan berbagai jenis array di PHP, mendukung kata-kata saya dengan contoh.

Saya akui bahwa publikasinya cukup banyak dan sulit untuk dibaca sekali pun. Tapi setiap kali Anda membutuhkannya pengurutan array php, Anda selalu dapat merujuk ke artikel ini untuk deskripsi fungsi yang Anda perlukan dan melihat contoh penggunaannya.

Semoga informasinya bermanfaat bagi Anda :)

Berlangganan pembaruan proyek dan

Karena kekuatan dan fleksibilitasnya, array telah menjadi atribut yang sangat diperlukan dalam PHP. Selain itu, dalam sejumlah situasi kompleks, array PHP dua dimensi dapat digunakan. Artikel ini tentang pengurutan array multidimensi di PHP.

Komponen:

  • Array multidimensi;
  • Fungsi bawaan PHP usort(), uasort() atau uksort();
  • Fungsi bawaan PHP strcasecmp() atau strcmp() .

Pelaksanaan:
Katakanlah kita memiliki sebuah array:

$siswa = larik (1 => larik ("nama" => "Jack", "nilai" => 98,5), 2 => larik ("nama" => "Tagihan", "nilai" => 90,1), 3 => array ("nama" => "Chloe", "kelas" => 94,0), 4 => array ("nama" => "Taylor", "kelas" => 95,1), 5 => array ("nama " => "Larry", "kelas" => 94.6));

Di sini Anda dapat mengurutkan array PHP dua dimensi berdasarkan parameter grade ( nilai) (pengurutan numerik) atau nama ( Nama) (urutkan berdasarkan abjad).

Array luar $students terdiri dari lima elemen, yang masing-masing juga direpresentasikan sebagai array terpisah. Array internal menggunakan ID siswa sebagai kunci dan menyimpan dua nilai: nama siswa dan nilainya.

Untuk mengurutkan array multidimensi, kita mendefinisikan fungsi kita sendiri. Kami memberi tahu PHP bahwa ini harus digunakan untuk memanggil fungsi bawaan usort(), uasort() atau uksort().

Fungsi yang Anda tentukan harus mengambil dua parameter dan mengembalikan nilai yang menunjukkan parameter mana yang muncul pertama dalam daftar. Nilai negatif atau salah menunjukkan bahwa parameter pertama ditentukan sebelum parameter kedua. Positif atau benar - parameter kedua didahulukan. Nilai nol (0) menunjukkan bahwa kedua parameter sama.

A – Menyortir berdasarkan kelas (parameter kelas) (pengurutan numerik)

Mari kita definisikan fungsi untuk mengurutkan array berdasarkan peringkat (parameter nilai):

// Mengurutkan fungsi berdasarkan peringkat: mengurutkan dalam urutan DESCENDING. fungsi grade_sort($x, $y) ( jika ($x[" kelas "]< $y[" оценка "]) { return true; } else if ($x["оценка"] >$y["score"]) ( kembalikan salah; ) lain ( kembalikan 0; ) )

Kemudian kita akan mengambil fungsi khusus dan melakukan iterasi melalui array PHP dua dimensi berdasarkan kunci pertama. Ini terlihat seperti ini:

// $students adalah array multidimensi kita, dan grade_sort adalah fungsi usort yang dibuat ($students, " grade_sort ");

Contoh:

// Cetak array dalam bentuk (array awal): echo "

Array dalam bentuk

" . print_r($siswa, 1) . "
"; // Urutkan berdasarkan kelas: uasort($students, "grade_sort"); echo "

Array diurutkan berdasarkan peringkat

" . print_r($siswa, 1) . "
";

PHP akan mengirimkan array internal ke fungsi ini untuk penyortiran lebih lanjut. Jika Anda tertarik dengan bagaimana semua ini terjadi secara detail, maka tampilkan hasil perbandingan nilai-nilai di dalam fungsi tersebut. Dan setelah membuat array dua dimensi di PHP, ubah fungsinya sendiri sebagai berikut:

fungsi grade_sort($x, $y) ( statis $hitungan = 1; gema “

Iterasi $count: ($x['score']) vs. ($y['skor'])

N"; $hitung++;< $y[‘ оценка ‘]) { return true; } else if ($x[‘ключ1′] >jika ($x['skor']

$y['key1′]) ( kembalikan salah; ) lain ( kembalikan 0; ) )

Dengan menampilkan nilai $x['score'] dan $y['score'] , Anda dapat melihat bagaimana fungsi pengurutan yang ditentukan pengguna dipanggil.

Anda dapat mempersingkat fungsi grade_sort seperti ini:< $y["grade"]); }

// Fungsi pengurutan numerik berdasarkan tingkatan: urutkan dalam fungsi DESCENDING grade_sort($x, $y) ( return ($x["grade"] Hasil menyortir array dua dimensi PHP

menurut penilaiannya ditunjukkan pada gambar di bawah ini: Catatan: Fungsi usort() mengurutkan berdasarkan nilai tetapi tidak menyimpan kunci ( untuk array eksternal

). Jika kunci diperlukan, lebih baik menggunakan fungsi uasort().

Untuk mengurutkan array $students berdasarkan kunci pertama, Anda perlu membandingkan dua string. Oleh karena itu, dalam contoh pengurutan berdasarkan abjad, kita akan menggunakan fungsi strcasecmp() ( tidak peka huruf besar-kecil) dan strcmp() ( peka huruf besar-kecil). Hasilnya array dua dimensi PHP akan terlihat seperti ini:

// Fungsi untuk mengurutkan berdasarkan nama: function name_sort($x, $y) ( return strcasecmp($x["name"], $y["name"]); )

Contoh:

// Cetak array sebagai (array awal): echo "

Array dalam bentuk

" . print_r($siswa, 1) . "
"; // Urutkan berdasarkan nama: uasort($students, "name_sort"); echo "

Array diurutkan berdasarkan nama

" . print_r($siswa, 1) . "
";

Tangkapan layar di bawah ini menunjukkan hasil pengurutan berdasarkan nama:


Terjemahan artikel " Mengurutkan array multidimensi di PHP"disiapkan oleh tim proyek yang ramah.

Saat bekerja di banyak situs, pertanyaan tentang mengurutkan data array berdasarkan abjad sering muncul. Banyak orang menulis array tambahan untuk ini, membandingkan tabel besar dan mengulangi setiap nama... Opsi ini bukan yang terbaik, meskipun kami juga akan mempertimbangkannya. Pada artikel ini saya ingin mengusulkan cara paling sederhana dan terpendek, yang jika Anda membaca manualnya dengan cermat, dapat ditemukan di dokumentasi.

Array Abjad PHP

Caranya cukup sederhana dan terdiri dari dua langkah: mengatur lokal (setlocal) dan mengurutkan array secara langsung. Mari kita lihat contoh dengan komentar.

kode PHP

setlocale(LC_ALL, "Rusia_Rusia.1251"); // atur lokal untuk huruf Rusia

// contoh array yang kata-katanya TIDAK berurutan
$example=array("jar","Boris","view","kuesioner","gamekeeper","Fedor","istri","voice");

Natcasesort($contoh, SORT_LOCALE_STRING); // mengurutkan array TANPA sensitivitas huruf besar-kecil
// AGAR SENSITIF KASUS, gunakan sort alih-alih natcasesort

// tampilkan hasilnya
foreach ($contoh sebagai $kunci => $nilai)(
echo "$value "; // hanya menampilkan kata, tanpa indeks
}
?>

Demonstrasi Unduh sumber
Dalam demo Anda dapat melihat skrip beraksi. Jika mau, Anda juga dapat mengunduh arsip beserta filenya.

Jika server Anda tidak menggunakan Windows, maka Anda perlu menginstal lokal lain atau beberapa lokal sekaligus:

(LC_SEMUA,"ru_RU.CP1251", "rus_RUS.CP1251", "Russian_Russia.1251");!}
// Cetak ru_RU.CP1251 untuk FreeBSD
// Mencetak rus_RUS.CP1251 untuk Linux
// Cetak Russian_Russia.1251 untuk Windows

Saya akan menjawab salah satu pertanyaan terlebih dahulu - lokal untuk Ukraina di PHP terlihat seperti ini:


Bagaimana cara mengatur lokal untuk pengkodean lain di PHP?

// Instal lokal untuk Windows

// Pengkodean Windows-1251
setlocale(LC_ALL, "Rusia_Rusia.1251");

// Pengkodean KOI8-R
setlocale(LC_ALL, "Rusia_Rusia.20866");

// Pengkodean UTF-8 (gunakan dengan hati-hati)
setlocale(LC_ALL, "Rusia_Rusia.65001");
?>

Cara kedua menyusun array sesuai abjad PHP

Jika metode ini tidak cocok untuk Anda dan Anda ingin melakukannya dengan cara yang sulit, buatlah array seperti ini:

kode PHP

=> sebuah
=>b
=> masuk
=>g
=>d
=> e
=> ё
=> w
=> hal
=> dan
=> th
=> ke
=> aku
=>m
=> n
=> tentang
=> hal
=> hal
=> dengan
=>t
=> kamu
=> f
=> x
=> ts
=> h
=> w
=> sekolah
=> ъ
=> hal
=>b
=> eh
=> kamu
=> saya
Dan ulangi array kedua dengan huruf pertama.
Kami menghitung huruf pertama dari setiap elemen array sebagai berikut:

kode PHP

$kota="Moskow"; // misalnya elemen dengan indeks 1

$first_letter = mb_substr($city,0,1,"UTF-8"); // dapatkan huruf "M"
Karena kami bekerja dengan huruf Rusia (pengkodean multi-byte), lebih baik menggunakan fungsi tersebut mb_substr, dan pada akhirnya lebih baik untuk menunjukkan dengan tepat pengkodean variabel atau data array, dalam kasus kami UTF-8.

Terima kasih atas perhatian Anda! Saya harap informasinya bermanfaat. Jika Anda memiliki pertanyaan, tulis di komentar.

array_terbalik

Menyusun elemen array dalam urutan terbalik.
Sintaksis:

Array array_reverse(array arr [, bool melestarikan_keys])

Fungsi array_reverse() mengembalikan array yang elemen-elemennya berada dalam urutan terbalik dari array yang diteruskan sebagai parameter. Dalam hal ini, koneksi antara kunci dan nilai tidak hilang jika parameter tambahan melestarikan_keys = TRUE.

Contoh penggunaan fungsi array_reverse():

$hasil = array_reverse($masukan);
$result_keyed = array_reverse($input, benar);
?>

Contoh ini akan membuat array $result dan $result_keyed dengan nilai yang sama tetapi kunci yang berbeda. Hasil cetakan dari array $result dan $result_keyed adalah sebagai berikut:

Himpunan(
=> Susunan
=> hijau
=>merah
)

=> 4
=>php
Himpunan(
=> Susunan
=> hijau
=>merah
)

=> 4
=>php
)

Catatan: Parameter melestarikan_keys kedua telah ditambahkan di PHP 4.0.3.

natcasesort

Melakukan jenis array yang tidak membedakan huruf besar dan kecil.
Sintaksis:

Batal natcasesort(array arr)

Fungsi natcasesort() mengurutkan array arr dalam urutan alami bagi manusia, menjaga asosiasi indeks.
Fungsi ini mirip dengan natsort(), namun tidak peka huruf besar-kecil.
Contoh penggunaan fungsi natcasesort():

"img2.png", "img1.png", "IMG3.png");

sort($array1);

print_r($array1);

natcasesort($array2);
echo "nPenyortiran alami (tidak peka huruf besar-kecil)n";
print_r($array2);
?>

Contoh yang diberikan akan menampilkan yang berikut:

SortirArray standar(
=> IMG0.png
=> IMG3.png
=> img1.png
=> img10.png
=> img12.png
=> img2.png
)

Penyortiran alami (tidak peka huruf besar-kecil)
Himpunan(
=> IMG0.png
=> img1.png
=> img2.png
=> IMG3.png
=> img10.png
=> img12.png
)

Fungsi yang didukung oleh PHP 4, PHP 5

Penyortiran khusus array asosiatif sambil mempertahankan asosiasi indeks.
Sintaksis:

Bool uasort(array arr, fungsi cmp_function)

Fungsi uasort() mengurutkan array arr yang mempertahankan asosiasi indeks, menggunakan fungsi yang ditentukan pengguna yang ditentukan oleh cmp_function untuk membandingkan indeks elemen.
Fungsi ini digunakan terutama ketika korespondensi antara indeks dan nilai array signifikan.
Fungsi uasort() mengembalikan nilai true jika pengurutan berhasil, dan false jika sebaliknya.
Catatan: Lihat fungsi usort() dan uksort() untuk menulis fungsi kustom.
Fungsi yang didukung oleh PHP 3 >=3.0.4, PHP 4, PHP 5

Penyortiran array khusus berdasarkan kunci.
Sintaksis:

Bool uksort(array arr, fungsi cmp_function)

Fungsi uksort() mengurutkan array arr berdasarkan indeks, menjaga asosiasi indeks, menggunakan fungsi yang ditentukan pengguna yang ditentukan dalam argumen cmp_function untuk membandingkan indeks elemen. Fungsi ini meneruskan dua indeks elemen yang akan dibandingkan, dan harus mengembalikan angka positif atau negatif atau 0.

Fungsi uksort() mengembalikan nilai true jika pengurutan berhasil diselesaikan, dan FALSE jika sebaliknya.
Seringkali kita harus mengurutkan sesuatu berdasarkan kriteria yang lebih kompleks daripada hanya berdasarkan abjad. Misalnya, $Files menyimpan daftar nama file dan subdirektori di direktori saat ini. Kita mungkin ingin menampilkan daftar ini tidak hanya dalam urutan leksografis, tetapi juga agar semua direktori diawali dengan file. Dalam hal ini, kita harus menggunakan fungsi uksort(), setelah terlebih dahulu menulis fungsi perbandingan dengan dua parameter, seperti yang disyaratkan oleh uksort().

1 contoh penggunaan fungsi uksort():

// Fungsi ini harus membandingkan nilai $f1 dan $f2 dan mengembalikan:
// -1 jika $f1<$f2,
// 0 jika $f1==$f2
// 1 jika $f1>$f2
// Di bawah< и >kami memahami urutan nama-nama ini dalam fungsi daftar keluaran FCmp($f1,$f2)
( // Direktori selalu ada sebelum file
if(is_dir($f1) && !is_dir($f2)) kembali -1;
// File selalu berada setelah direktori
if(!is_dir($f1) && is_dir($f2)) mengembalikan 1;
// Jika tidak, bandingkan secara leksigrafis
jika($f1<$f2) return -1; elseif($f1>$f2) mengembalikan 1; jika tidak, kembalikan 0;
}
// Biarkan $Files berisi array dengan kunci - nama file
// di direktori saat ini. Mari kita urutkan.uksort($Files,"FCmp"); //lewati fungsi penyortiran "

array_multisort()

Mengurutkan beberapa array atau array multidimensi (PHP 4, PHP 5)

Keterangan:

Bool array_multisort (array ar1 [, argumen campuran [, campuran ... [, array ...]]])

Fungsi array_multisort() dapat digunakan untuk mengurutkan beberapa array atau array multidimensi tunggal berdasarkan satu atau lebih dimensi. Fungsi ini menjaga korespondensi antara kunci dan nilai terkaitnya.

Array masukan diperlakukan sebagai kolom tabel yang perlu diurutkan berdasarkan baris, pendekatan yang mirip dengan perilaku ekspresi SQL ORDER BY. Array pertama mempunyai prioritas dalam proses penyortiran.

Struktur argumen untuk fungsi ini sedikit tidak biasa, namun nyaman. Argumen pertama harus berupa array. Argumen selanjutnya dapat berupa array atau nilai yang menentukan urutan pengurutan, seperti yang ditunjukkan pada daftar di bawah.

Nilai yang menentukan urutan pengurutan:

SORT_ASC - urutkan dalam urutan menaik
SORT_DESC - urutkan dalam urutan menurun

Tandai jenis pengurutan:

SORT_REGULAR - bandingkan elemen seperti biasa
SORT_NUMERIC - membandingkan elemen seolah-olah berupa angka
SORT_STRING - bandingkan elemen seolah-olah itu adalah string

Adalah ilegal untuk menentukan dua tanda pengurutan dengan tipe yang sama setelah setiap larik. Bendera pengurutan yang diteruskan setelah argumen ar1 hanya berlaku untuk argumen tersebut - sebelum fungsi mulai memproses larik berikutnya, bendera ini kembali ke nilai default SORT_ASC dan SORT_REGULAR.

Menyortir beberapa array

$ar1 = larik("10", 100, 100, "a");
$ar2 = larik(1, 3, "2", 1);
array_multisort($ar1, $ar2);

Pada contoh di atas, setelah pengurutan selesai, larik pertama akan berisi 10, "a", 100, 100. Larik kedua akan berisi 1, 1, "2", 3. Elemen larik kedua berkorespondensi dengan elemen identik dari yang pertama (100 dan 100 ), juga akan diurutkan.

Mengurutkan array multidimensi

$ar = larik(array("10", 100, 100, "a"), larik(1, 3, "2", 1));
array_multisort ($ar, SORT_ASC, SORT_STRING,
$ar, SORT_NUMERIC, SORT_DESC);

Dalam contoh di atas, setelah pengurutan, larik pertama akan berisi 10, 100, 100, "a" (elemen-elemennya telah diurutkan dalam urutan menaik seolah-olah berupa string) dan larik kedua akan berisi 1, 3, "2" , 1 (elemen diurutkan berdasarkan angka, dalam urutan menurun).

Mengurutkan array berdasarkan nilai menggunakan fungsi khusus untuk membandingkan elemen (PHP 3 >= 3.0.3, PHP 4, PHP 5)

Keterangan:

Bool usort (array & array, panggilan balik cmp_function)

Fungsi ini mengurutkan elemen array menggunakan fungsi khusus untuk membandingkan nilai. Jika Anda perlu mengurutkan array berdasarkan kriteria yang tidak biasa, Anda harus menggunakan fungsi ini.

Fungsi yang digunakan untuk perbandingan harus mengembalikan bilangan bulat yang lebih kecil dari, sama dengan, atau lebih besar dari nol jika argumen pertama lebih kecil, sama dengan, atau lebih besar dari argumen kedua.

Catatan: Jika dua elemen array asli sama, urutannya dalam array yang diurutkan tidak ditentukan. Sebelum PHP 4.0.6, fungsi yang ditentukan pengguna mempertahankan urutan elemen-elemen tersebut dalam array asli, tetapi algoritma pengurutan baru yang diperkenalkan pada versi 4.1.0 tidak lagi menggunakan solusi ini dan tidak memiliki solusi efektif lainnya.

Mengembalikan TRUE jika berhasil atau FALSE jika terjadi kesalahan.

Contoh Usort()

fungsi cmp($a, $b)
{
jika ($a == $b) (
kembali 0;
}
kembali ($a)

$a = susunan(3, 2, 5, 6, 1);

usort($a, "cmp");

while (daftar($kunci, $nilai) = masing-masing($a)) (
gema "$kunci: $nilai
";
}
?>

0: 1
1: 2
2: 3
3: 5
4: 6

Komentar: Tentu saja, fungsi sort() lebih cocok untuk kasus sepele ini.

Contoh fungsi usort() menggunakan array multidimensi

fungsi cmp($a, $b)
{
return strcmp($a["buah"], $b["buah"]);
}

$buah["buah"] = "lemon";
$buah["buah"] = "apel";
$buah["buah"] = "anggur";

usort($buah-buahan, "cmp");

while (daftar($kunci, $nilai) = masing-masing($buah)) (
echo "\$buah-buahan[$kunci]: " . $nilai["buah"] . "
";
}
?>

Saat mengurutkan array multidimensi, variabel $a dan $b berisi referensi ke dua indeks pertama array.

Hasil menjalankan contoh ini:

$buah: apel
$buah: anggur
$buah: lemon

Contoh penggunaan usort() dengan metode kelas

kelas TesObj(
var $nama;

fungsi TestObj($nama)
{
$ini->nama = $nama;
}

/* Ini adalah fungsi perbandingan statis: */
fungsi cmp_obj($a, $b)
{
$al = strtolower($a->nama);
$bl = strtolower($b->nama);
jika ($al == $bl) (
kembali 0;
}
kembali ($al > $bl) ? +1: -1;
}
}

$a = TestObj baru("c");
$a = TestObj baru("b");
$a = TestObj baru("d");

usort($a, array("TestObj", "cmp_obj"));

foreach ($a sebagai $item) (
gema $item->nama . "
";
}
?>

Hasil menjalankan contoh ini:

B
C
D

Mengacak elemen array.
Sintaksis:

Batalkan pengacakan (array arr)

Fungsi shuffle() mengacak daftar yang diteruskan ke sana dengan parameter pertama arr, sehingga nilainya didistribusikan secara acak. Dalam hal ini, array itu sendiri berubah dan array asosiatif dianggap sebagai daftar.
Contoh penggunaan fungsi shuffle():

$angka = rentang(1, 20);
srand((float)microtime() * 1000000);
acak($angka);
while (daftar(, $angka) = masing-masing($angka)) (
echo "$angka ";
}

Catatan: Mulai PHP 4.2.0, tidak perlu lagi menginisialisasi penghasil angka acak dengan fungsi srand()
atau mt_srand(), karena ini sekarang terjadi secara otomatis.
Fungsi yang didukung oleh PHP 3 >= 3.0.8, PHP 4, PHP 5

Urutkan array dalam urutan menaik.
Sintaksis:

Bool sortir(array arr [, int sort_flags])

Fungsi sort() dirancang untuk mengurutkan array dalam urutan menaik.
Catatan: Fungsi ini mengubah kunci nilai yang diurutkan. Itu. setiap array asosiatif diperlakukan sebagai daftar oleh fungsi ini. Setelah diurutkan, urutan kunci menjadi 0,1,2,..., dan nilainya didistribusikan kembali sesuai kebutuhan. Seperti yang Anda lihat, koneksi antara parameter key=>value tidak disimpan, terlebih lagi, kuncinya hilang begitu saja, jadi hampir tidak disarankan untuk mengurutkan apa pun selain daftar.
Contoh penggunaan fungsi sort():

sort($buah);
reset($buah);

gema "buah-buahan[" . $kunci . "] = " . $val. "N";
}
?>

Contoh ini akan menampilkan:

Buah-buahan = buah apel = buah pisang = buah lemon = jeruk


;
SORT_NUMERIC - membandingkan elemen sebagai angka;
SORT_STRING - membandingkan elemen sebagai string.

Urutkan array dalam urutan menurun.
Sintaksis:

Bool rsort (array array [, int sort_flags])

Fungsi rsort() mengurutkan array dalam urutan menurun (tertinggi ke terendah).

Fungsi ini mengembalikan TRUE jika berhasil, FALSE jika tidak.
Contoh penggunaan fungsi rsort():

rsort($buah);
reset($buah);
while (daftar($kunci, $val) = masing-masing($buah)) (
gema "$kunci = $valn";
}
?>

Contoh ini akan menampilkan:

0 = oranye
1 = jeruk nipis
2 = pisang
3 = apel

Argumen sort_flags menentukan flag pengurutan berikut:
SORT_REGULAR - membandingkan elemen "sebagaimana adanya"
Fungsi yang didukung oleh PHP 3, PHP 4, PHP 5

Mengurutkan array asosiatif dalam urutan menaik.
Sintaksis:

Bool bermacam-macam(array arr [, int sort_flags])

Fungsi asort() mengurutkan array yang ditentukan dalam parameternya sehingga nilainya berada dalam urutan abjad (untuk string) atau menaik (untuk angka). Dalam hal ini, hubungan antara kunci dan nilai terkaitnya dipertahankan, mis. Beberapa pasangan kunci=>nilai hanya “mengambang” ke atas, dan beberapa, sebaliknya, “jatuh”.

Fungsi ini mengembalikan nilai true jika berhasil, dan false jika terjadi kesalahan.
Contoh penggunaan fungsi asort():

"lemon", "a" => "jeruk", "b" => "pisang", "c" => "apel");
bermacam-macam($buah);
reset($buah);
while (daftar($kunci, $val) = masing-masing($buah)) (
gema "$kunci = $valn";
}
?>

Contohnya akan menampilkan yang berikut:

C = appleb = pisang = lemona = jeruk

Array $fruits diurutkan dalam urutan simbolis menaik, sementara indeks array dipertahankan.



Fungsi yang didukung oleh PHP 3, PHP 4, PHP 5

Mengurutkan array asosiatif dalam urutan menurun.
Sintaksis:

Bool arsort(array arr [, int sort_flags])

Fungsi arsort() mengurutkan array arr dalam urutan menurun, menjaga asosiasi indeks.
Fungsi ini digunakan terutama jika urutan elemen dalam array penting.
Fungsi ini mengembalikan nilai benar jika pengurutan berhasil, dan salah jika terjadi kesalahan.
Contoh penggunaan fungsi array():

"lemon", "a"=>"jeruk", "b"=>"pisang", "c"=>"apel");
arsort($arr);
setel ulang($arr);
while(daftar ($kunci, $val) = masing-masing ($arr)) (
gema "$kunci = $vall";
}

Contohnya akan menampilkan:

A = jeruk = lemon = pisang = apel

Array $arr diurutkan dalam urutan karakter menurun, sedangkan indeks array dipertahankan.
Metode pengurutan dapat diubah menggunakan parameter sort_flags opsional.
Opsi ini dapat menentukan bagaimana nilai dibandingkan (sebagai string atau angka). Ini dapat mengambil nilai yang telah ditentukan sebelumnya berikut:
SORT_REGULAR - perbandingan nilai normal;
SORT_NUMERIC - bandingkan sebagai angka;
SORT_STRING - bandingkan sebagai string.
Opsi ini diperkenalkan di PHP versi 4.
Fungsi yang didukung oleh PHP 3, PHP 4, PHP 5

Urutkan array berdasarkan tombol menaik.
Sintaksis:

Bool ksort(array arr [, int sort_flags])

Fungsi ksort() mengurutkan array dalam urutan kunci menaik sambil menjaga hubungan nilai kunci. Fungsi ini sangat berguna ketika mengurutkan array asosiatif.
Fungsi ini akan mengembalikan nilai true jika semuanya berhasil, false jika sebaliknya.
Contoh penggunaan fungsi ksort():

"lemon", "a"=>"jeruk", "b"=>"pisang", "c"=>"apel");
ksort($buah);
reset($buah);
while (daftar($kunci, $val) = masing-masing($buah)) (
gema "$kunci = $valn";
}
?>

Contoh ini akan menampilkan:

A = jerukb = pisangc = apel = lemon

Argumen sort_flags menentukan flag pengurutan berikut:
SORT_REGULAR - membandingkan elemen "sebagaimana adanya"
SORT_NUMERIC - membandingkan elemen sebagai angka SORT_STRING - membandingkan elemen sebagai string
Fungsi yang didukung oleh PHP 3, PHP 4, PHP 5

Urutkan array berdasarkan indeks menurun.
Sintaksis:

Bool krsort(array arr [, int sort_flags])

Fungsi krsort() mengurutkan kunci dalam array arr dalam urutan terbalik. Dalam hal ini, rantai nilai kunci dipertahankan. Fungsi ini berguna saat mengurutkan array asosiatif.
Fungsi ini mengembalikan nilai benar jika berhasil, dan salah jika sebaliknya.
Contoh penggunaan fungsi krsort():

"lemon", "a"=>"jeruk", "b"=>"pisang", "c"=>"apel");
krsort($buah);
reset($buah);
while (daftar($kunci, $val) = masing-masing($buah)) (
gema "$kunci = $valn";
}
?>

Contoh ini akan menampilkan:

D = lemonc = appleb = bananaa = jeruk

Argumen sort_flags menentukan flag pengurutan berikut:
SORT_REGULAR - membandingkan elemen "sebagaimana adanya"
SORT_NUMERIC - membandingkan elemen sebagai angka SORT_STRING - membandingkan elemen sebagai string
Fungsi yang didukung oleh PHP 3 >= 3.0.13, PHP 4, PHP 5

Melakukan semacam array "alami".
Sintaksis:

Batalkan natsort (array arr)

Fungsi natsort() mengurutkan array arr dalam urutan alami bagi manusia, menjaga asosiasi indeks.
Contoh penggunaan fungsi natsort():

sort($array1);
echo "Urutan standar";
print_r($array1);

natsort($array2);
echo "Penyortiran alami";
print_r($array2);
?>

Contoh ini akan menampilkan yang berikut:

SortirArray standar(
=> img1.png
=> img10.png
=> img12.png
=> img2.png
)

Sortir alamiArray(
=> img1.png
=> img2.png
=> img10.png
=> img12.png
)

Fungsi yang didukung oleh PHP 4, PHP 5

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat