Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Cara Menyortir Array dalam PHP

by
Difficulty:BeginnerLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Febri Ardian Sanjoyo (you can also view the original English article)

Itu selalu lebih mudah untuk mengambil sepotong informasi tertentu dari data yang diurutkan, jika tidak, Anda harus melalui setiap elemen array satu per satu. Sebagai contoh, katakanlah Anda telah menyimpan skor siswa yang berbeda di kelas dalam sebuah array atau tabel. Jika data tidak diurutkan berdasarkan skor yang diperoleh, Anda harus melihat skor setiap siswa di kelas sebelum Anda dapat menentukan siapa yang memperoleh skor tertinggi dan terendah. Jika tabel sudah diurutkan rendah ke tinggi berdasarkan skor, hanya dengan melihat skor siswa pertama akan memberi tahu Anda nilai terendah.

Penyortiran membuat banyak tugas yang memerlukan akses atau memperoleh serangkaian data tertentu sangat mudah dan efisien. Dalam tutorial ini, kita akan belajar cara menggunakan fungsi PHP bawaan untuk mengurutkan berbagai jenis array.

Menyortir Array berdasar Value

Mengurutkan array berdasarkan value/nilai elemen-elemennya sangat mudah di PHP. Anda dapat memilih untuk mempertahankan atau membuang key-value associations, dan Anda juga dapat menentukan fungsi Anda sendiri untuk menentukan bagaimana elemen diurutkan. Saya akan menunjukkan caranya pada bagian tutorial ini.

Anda dapat menggunakan fungsi sort(&$array, $sort_flags) untuk mengurutkan nilai-nilai array dari rendah ke tinggi. Namun, itu tidak akan mempertahankan key-value associations saat menyortir array. Key baru ditugaskan untuk elemen yang diurutkan alih-alih penyusunan ulang sederhana. Parameter kedua opsional memungkinkan Anda menentukan bagaimana elemen harus diurutkan. Itu dapat memiliki enam nilai yang berbeda:

  1. SORT_REGULAR — Ini akan mengurutkan nilai tanpa mengubah tipenya.
  2. SORT_NUMERIC — Ini akan mengurutkan nilai dengan membandingkannya secara numerik.
  3. SORT_STRING — Ini akan mengurutkan nilai dengan membandingkannya sebagai string.
  4. SORT_LOCALE_STRING — Ini akan membandingkan nilai sebagai string berdasarkan lokal saat ini. Anda dapat memperbarui lokal sendiri dengan menggunakan setlocale().
  5. SORT_NATURAL — Ini akan mengurutkan item menggunakan "natural ordering" sambil membandingkannya sebagai string.
  6. SORT_FLAG_CASE — Ini dapat dikombinasikan dengan SORT_STRING atau SORT_NATURAL untuk mematikan sensitivitas huruf besar sambil menyortir string.

Berikut adalah beberapa contoh penyortiran untuk membantu Anda dengan cepat memahami perbedaan antara semua flag sort.

Dalam contoh, pengurutan reguler, string numerik dikonversi ke nilai numeriknya dan pengurutan dilakukan sesuai. String "Apple" adalah non-numerik sehingga tidak tersentuh dan dibandingkan sebagai string.

Pada contoh kedua, pengurutan numerik, kita ingin data diurutkan berdasarkan nilai numerik sehingga "Apple" dikonversi ke nilai numerik 0 dan yang lebih dulu. Sisa nilai diurutkan seperti yang diharapkan.

Pada contoh ketiga, semua nilai diperlakukan sebagai string. Ini berarti bahwa alih-alih membandingkan nilai numerik 123 atau 3249832 dengan 38, itu dibandingkan sebagai string — satu karakter pada satu waktu. Karena "1" muncul sebelum "3", nilai 123 dianggap lebih rendah dari 38.

Jika Anda ingin mengurutkan nilai array Anda dari tinggi ke rendah alih-alih rendah ke tinggi, Anda dapat melakukannya dengan bantuan fungsi rsort(). Ini menerima semua parameter yang sama seperti sort() tetapi mengurutkan nilai dalam urutan terbalik. Itu juga tidak memelihara key-value associations, jadi itu bukan pilihan yang baik untuk mengurutkan associative array.

Sortir Array Associative

Key value associations menjadi penting ketika Anda berurusan dengan array Associative. Pertimbangkan contoh berikut di mana array Associative digunakan untuk menyimpan nama orang yang berbeda dan buah favorit mereka. Jika Anda ingin mengurutkan daftar berdasarkan abjad dengan nama buah-buahan, menggunakan fungsi sort() dari bagian sebelumnya akan mengakibatkan hilangnya associated keys.

Seperti yang Anda lihat, kita tidak hanya kehilangan pergaulan orang dengan buah favorit mereka, kita juga kehilangan nama-nama orang yang berbeda. Setiap nilai yang diurutkan telah diberi indeks numerik baru berdasarkan posisinya di array yang diurutkan.

Untuk membantu Anda mengatasi masalah ini dengan mudah, PHP memiliki dua fungsi berbeda yang mempertahankan key-value association sambil mengurutkan array berdasarkan value/nilainya. Dua fungsi ini adalah asort() dan arsort(). Cuplikan kode berikut mengurutkan array $fruit_preferences yang sama tetapi menggunakan asort() untuk melakukannya.

Seperti terbukti dari contoh di atas, nilai Apple bergerak ke atas sambil tetap mempertahankan hubungannya dengan Patricia. Nama buah dapat diurutkan secara terbalik dengan mudah menggunakan fungsi arsort().

Kedua fungsi ini menerima flag sorting yang sama dengan nilai parameter kedua opsional mereka sebagai sort() dan rsort().

Mengurutkan Elemen Array berdasarkan Nilai dengan Fungsi yang Ditentukan Pengguna

Keempat fungsi penyortiran dapat dengan mudah menangani kebutuhan penyortiran umum Anda dengan bantuan berbagai flag. Namun, terkadang kriteria Anda untuk membandingkan elemen array mungkin berbeda.

Katakanlah Anda memiliki array kata-kata acak yang perlu disortir berdasarkan abjad. Namun, Anda juga ingin mengurutkannya berdasarkan panjangnya sebelum mengurutkannya berdasarkan abjad. Sebagai contoh, zoo akan muncul setelah apple dalam penyortiran alfabet tradisional. Namun, jika ingin menunjukkan kata-kata pendek sebelum yang lebih panjang, zoo akan muncul sebelum apple. Dalam kumpulan huruf yang sama, ape akan datang sebelum zoo karena urutan abjad.

Pada dasarnya, kata-kata diurutkan terlebih dahulu berdasarkan panjangnya dan kemudian kata-kata dengan jumlah huruf yang sama diurutkan secara alfabet dalam kelompok mereka sendiri. Jenis penyortiran ini tidak dibangun ke dalam PHP sehingga kita harus menulis fungsi penyortiran kita sendiri.

Apa yang dilakukan PHP dalam kasus ini adalah memberi Anda beberapa fungsi yang dapat digunakan untuk melewatkan array yang ingin Anda urutkan bersama dengan nama fungsi penyortiran Anda sendiri.

Anda dapat menggunakan usort() function untuk mengurutkan nilai array dalam array reguler. Demikian pula, Anda dapat menggunakan fungsi uasort() untuk mengurutkan nilai dalam array asosiatif sambil juga mempertahankan key-value associations.

Cuplikan kode di bawah ini menunjukkan salah satu cara untuk menyelesaikan behavior ini.

Dalam fungsi panggilan balikcallback yang dimaksudkan untuk penyortiran khusus, kita harus mengembalikan bilangan bulat kurang dari 0 untuk menunjukkan bahwa nilai pertama lebih kecil dari yang kedua. Kembalikan 0 jika nilai pertama sama dengan yang kedua. Kembalikan bilangan bulat lebih besar dari 0 jika nilai pertama lebih besar dari kedua.

Karena kriteria penyortiran utama kita adalah panjang string, kita langsung mengembalikan -1 jika kata pertama lebih pendek dari yang kedua. Demikian pula, kita langsung mengembalikan 1 jika kata pertama lebih panjang dari yang kedua. Jika kedua kata sama panjangnya, kita membandingkannya secara alfabet menggunakan strcmp() function dan mengembalikan nilainya.

Seperti yang Anda lihat di output, fungsi sortir kustom kita menata ulang kata-kata persis seperti yang kita inginkan.

Penyortiran Array dengan kunci

Mengurutkan array berdasarkan kuncinya umumnya berguna ketika Anda berurusan dengan array asosiatif. Misalnya, Anda mungkin memiliki array dengan informasi tentang jumlah bandara di berbagai negara. Dengan asumsi bahwa nama-nama negara yang berbeda adalah kunci dan jumlah bandara adalah nilai/array, Anda mungkin ingin mengurutkan nama negara secara alfabet. Ini sangat mudah dilakukan dengan fungsi ksort() dan krsort(). Kedua fungsi ini akan mempertahankan key-value association elemen array setelah pengurutan. Fungsi ksort() mengurutkan kunci dari rendah ke tinggi dan krsort() mengurutkan kunci dari tinggi ke rendah.

Berikut adalah contoh penyortiran dasar:

Anda juga dapat menyediakan PHP tanpa custom function Anda sendiri untuk menyortir array key menggunakan fungsi uksort(). Sama seperti usort(), fungsi callback di uksort() juga mengharuskan Anda mengembalikan bilangan bulat kurang dari 0 jika kunci pertama dianggap kurang dari yang kedua dan bilangan bulat lebih besar dari 0 jika kunci pertama lebih besar dari yang kedua. Fungsi ini juga memelihara key-value association dari elemen array.

Dalam contoh di atas, kita telah menggunakan fungsi pengurutan khusus dari bagian sebelumnya untuk mengurutkan nama negara terlebih dahulu dengan panjang nama mereka dan kemudian menurut abjad.

Mengurutkan Array Multi-Dimensi dalam PHP

Adalah jauh lebih umum dalam kehidupan nyata untuk berurusan dengan informasi multi-dimensi. Misalnya, lembaga akan menyimpan nilai semua siswa dalam berbagai mata pelajaran dalam satu tabel alih-alih membuat tabel baru untuk setiap mata pelajaran. Jika Anda harus menyimpan informasi yang sama dalam PHP, Anda juga lebih suka melakukannya menggunakan array multi-dimensi daripada array terpisah untuk setiap subjek.

Dalam tutorial ini, kita akan belajar cara mengurutkan array multi dimensi menggunakan daftar bangunan tertinggi di dunia sebagai contoh. Array kita akan berisi informasi tentang nama bangunan, kota dan negara di mana ia berada, jumlah lantai dan tinggi total dalam meter bersama dengan tahun di mana ia dibangun.

Saat Anda ingin mengurutkan nilai dalam array multi-dimensi berdasarkan bidang tertentu, Anda bisa menggunakan fungsi usort(). Contoh di bawah ini akan membantu Anda memahami teknik ini dengan lebih baik.

Dalam contoh di atas, informasi tentang setiap bangunan disimpan dalam array sendiri di dalam array $tallest_buildings utama. Fungsi storey_sort() cukup mengurangi jumlah lantai di gedung kedua dari yang pertama untuk menentukan bangunan mana yang lebih kecil sesuai dengan kriteria kita. Kita tidak perlu khawatir tentang mengembalikan nilai negatif atau positif tertentu karena semua nilai negatif berarti lebih kecil dan semua nilai positif berarti lebih besar.

Pada akhirnya, kita hanya beralih melalui array utama dan mencetak informasi tentang setiap bangunan.

Pikiran terakhir

Dalam tutorial ini, saya menunjukkan kepada Anda beberapa fungsi berbeda di PHP yang dapat digunakan untuk mengurutkan array dengan kunci atau nilainya. Kita juga belajar cara mengurutkan array dengan kunci atau nilainya menggunakan kriteria pemilahan kustom kita sendiri dengan bantuan fungsi uksrot() dan uasort(). Bagian terakhir membahas bagaimana mengurutkan semua nilai dalam array multi-dimensi hanya menggunakan bidang tertentu.

Saya harap Anda mempelajari sesuatu yang baru dari tutorial ini. Jika Anda memiliki pertanyaan atau saran, beri tahu saya di komentar. Cara terbaik untuk belajar adalah mencoba dan membuat beberapa contoh Anda sendiri, menyortir array dengan menggunakan fungsi-fungsi ini.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.