• Contact Us
Jumat, Mei 26, 2023
-18 °c
Teman Ngoding
  • Home
  • Tutorial
    • Laravel
    • Codeigniter
    • PHP
    • Golang
    • Java
    • Javascript
    • React JS
    • SQL
    • Problem Solution
  • Video Tutorial
    • Video Laravel
    • Video Codeigniter
    • C++
    • Video Git
  • Events
  • Berita
  • Donate
  • Indonesia
    • English
No Result
View All Result
Teman Ngoding
  • Home
  • Tutorial
    • Laravel
    • Codeigniter
    • PHP
    • Golang
    • Java
    • Javascript
    • React JS
    • SQL
    • Problem Solution
  • Video Tutorial
    • Video Laravel
    • Video Codeigniter
    • C++
    • Video Git
  • Events
  • Berita
  • Donate
  • Indonesia
    • English
No Result
View All Result
Plugin Install : Cart Icon need WooCommerce plugin to be installed.
Teman Ngoding
No Result
View All Result

Cara Menyortir Array dalam PHP

admin by admin
April 26, 2022
in PHP, Problem Solution, Tutorial
0 0
0
Home Tutorial PHP

This post is also available in: English

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.

<?php
 
$random_data = [32508, 98134, "234984", "3249832", "38", 123, "Apple"];
 
sort($random_data);
echo "Regular Sorting  — ";
foreach($random_data as $element) {
    echo str_pad($element, 9)." ";
}
// Regular Sorting  — 38        123       32508     98134     234984    3249832   Apple
 
sort($random_data, SORT_NUMERIC);
echo "\nNumeric Sorting  — ";
foreach($random_data as $element) {
    echo str_pad($element, 9)." ";
}
// Numeric Sorting  — Apple     38        123       32508     98134     234984    3249832
 
sort($random_data, SORT_STRING);
echo "\nString Sorting   — ";
foreach($random_data as $element) {
    echo str_pad($element, 9)." ";
}
// String Sorting   — 123       234984    3249832   32508     38        98134     Apple

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.

<?php
 
$fruit_preferences = ["James" => "Orange", "John" => "Banana", "Patricia" => "Apple", "Jennifer" => "Mango", "Mary" => "Grapes"];
 
echo "Before Sorting — \n";
foreach($fruit_preferences as $person=>$preference) {
    echo $person." likes ".$preference."\n";
}
 
/*
Before Sorting — 
James likes Orange
John likes Banana
Patricia likes Apple
Jennifer likes Mango
Mary likes Grapes
*/
 
sort($fruit_preferences);
 
echo "After Sorting  — \n";
foreach($fruit_preferences as $person=>$preference) {
    echo $person." likes ".$preference."\n";
}
 
/*
After Sorting  — 
0 likes Apple
1 likes Banana
2 likes Grapes
3 likes Mango
4 likes Orange
*/
 
?>

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.

<?php
 
$fruit_preferences = ["James" => "Orange", "John" => "Banana", "Patricia" => "Apple", "Jennifer" => "Mango", "Mary" => "Grapes"];
 
echo "Before Sorting — \n";
foreach($fruit_preferences as $person=>$preference) {
    echo $person." likes ".$preference."\n";
}
 
/*
Before Sorting — 
James likes Orange
John likes Banana
Patricia likes Apple
Jennifer likes Mango
Mary likes Grapes
*/
 
asort($fruit_preferences);
 
echo "After Sorting  — \n";
foreach($fruit_preferences as $person=>$preference) {
    echo $person." likes ".$preference."\n";
}
 
/*
After Sorting  — 
Patricia likes Apple
John likes Banana
Mary likes Grapes
Jennifer likes Mango
James likes Orange
*/
 
?>

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.

<?php
 
$random_words = ["ape", "apple", "zoo", "pie", "elephant", "banana", "picnic", "eye"];
 
sort($random_words);
echo "Regular Sort Function: \n";
foreach($random_words as $element) {
    echo str_pad($element, 9)." ";
}
 
/*
Regular Sort Function: 
ape       apple     banana    elephant  eye       picnic    pie       zoo
*/
 
function custom_sort($word_a, $word_b) {
    if (strlen($word_a) < strlen($word_b)) {
        return -1;
    }
    if (strlen($word_a) == strlen($word_b)) {
        return strcmp($word_a, $word_b);
    }
    if (strlen($word_a) > strlen($word_b)) {
        return 1;
    }
}
 
usort($random_words, "custom_sort");
echo "\nCustom Sort Function: \n";
foreach($random_words as $element) {
    echo str_pad($element, 9)." ";
}
 
/*
Custom Sort Function: 
ape       eye       pie       zoo       apple     banana    picnic    elephant
*/
 
?>

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:

<?php
 
$airport_count = ["United States" => 13513, "Brazil" => 4093, "Mexico" => 1714, "Canada" => 1467, "Russia" => 1218, "Argentina" => 1138, "Bolivia" => 855, "Colombia" => 836, "Paraguay" => 799, "Indonesia" => 673];
 
ksort($airport_count);
 
foreach($airport_count as $country=>$count) {
    echo str_pad($country, 15)." ".$count."\n";
}
 
/*
Argentina       1138
Bolivia         855
Brazil          4093
Canada          1467
Colombia        836
Indonesia       673
Mexico          1714
Paraguay        799
Russia          1218
United States   13513
*/
 
?>

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.

<?php
 
$airport_count = ["United States" => 13513, "Brazil" => 4093, "Mexico" => 1714, "Canada" => 1467, "Russia" => 1218, "Argentina" => 1138, "Bolivia" => 855, "Colombia" => 836, "Paraguay" => 799, "Indonesia" => 673];
 
function custom_sort($word_a, $word_b) {
    if (strlen($word_a) < strlen($word_b)) {
        return -1;
    }
    if (strlen($word_a) == strlen($word_b)) {
        return strcmp($word_a, $word_b);
    }
    if (strlen($word_a) > strlen($word_b)) {
        return 1;
    }
}
 
uksort($airport_count, "custom_sort");
 
foreach($airport_count as $country=>$count) {
    echo str_pad($country, 15)." ".$count."\n";
}
 
/*
Brazil          4093
Canada          1467
Mexico          1714
Russia          1218
Bolivia         855
Colombia        836
Paraguay        799
Argentina       1138
Indonesia       673
United States   13513
*/
 
?>

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.

<?php
 
$tallest_buildings = [
    ["Building" => "Burj Khalifa","City" => "Dubai","Country" => "United Arab Emirates","Height" => 828,"Floors" => 163,"Year" => 2010],
    ["Building" => "Shanghai Tower","City" => "Shanghai","Country" => "China","Height" => 632,"Floors" => 128,"Year" => 2015],
    ["Building" => "Abraj Al-Bait Towers","City" => "Mecca","Country" => "Saudi Arabia","Height" => 601,"Floors" => 120,"Year" => 2012],
    ["Building" => "Ping An Finance Center","City" => "Shenzhen","Country" => "China","Height" => 599,"Floors" => 115,"Year" => 2017],
    ["Building" => "Lotte World Tower","City" => "Seoul","Country" => "South Korea" ,"Height" => 554,"Floors" => 123,"Year" => 2016]
];
 
function storey_sort($building_a, $building_b) {
    return $building_a["Floors"] - $building_b["Floors"];
}
 
usort($tallest_buildings, "storey_sort");
 
foreach($tallest_buildings as $tall_building) {
    list($building, $city, $country, $height, $floors) = array_values($tall_building);
    echo $building." is in ".$city.", ".$country.". It is ".$height." meters tall with ".$floors." floors.\n";
}
 
/*
Ping An Finance Center is in Shenzhen, China. It is 599 meters tall with 115 floors.
Abraj Al-Bait Towers is in Mecca, Saudi Arabia. It is 601 meters tall with 120 floors.
Lotte World Tower is in Seoul, South Korea. It is 554 meters tall with 123 floors.
Shanghai Tower is in Shanghai, China. It is 632 meters tall with 128 floors.
Burj Khalifa is in Dubai, United Arab Emirates. It is 828 meters tall with 163 floors.
*/
 
?>

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.

Tags: array phppemrograman php
ShareTweetShare
admin

admin

Next Post
SQL Query untuk mengambil row sebagai kolom

SQL Query untuk mengambil row sebagai kolom

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

  • Trending
  • Comments
  • Latest
Tutorial CodeIgniter 4 part 1 ~ RESTful API JWT Authentication

Tutorial CodeIgniter 4 part 1 ~ RESTful API JWT Authentication

Juni 2, 2022
REST API Login dan Register Node.js dengan JWT

REST API Login dan Register Node.js dengan JWT

Juli 28, 2022
Tutorial Codeigniter 4 ~ Login dan Register

Tutorial Codeigniter 4 ~ Login dan Register

Mei 30, 2022
Codeigniter 4 ~ Membuat Notifikasi Menggunakan SweetAlert

Codeigniter 4 ~ Membuat Notifikasi Menggunakan SweetAlert

Juni 8, 2022
Tutorial Codeigniter 4 ~ Login dan Register

Tutorial Codeigniter 4 ~ Login dan Register

5
Rekomendasi tempat belajar pemrograman

Rekomendasi tempat belajar pemrograman

3
Menghilangkan Public dan Index.php dari URL Codeigniter 4

Menghilangkan Public dan Index.php dari URL Codeigniter 4

2
Migration Laravel

Migration Laravel

1
HTML Fundamentals – HTML Basic

HTML Fundamentals – HTML Basic

Mei 19, 2023
Pekerjaan Apa yang Akan Diganti oleh AI?

Pekerjaan Apa yang Akan Diganti oleh AI?

Mei 11, 2023
Programmer Atau Hacker?

Programmer Atau Hacker?

April 6, 2023
PENGENALAN BACKEND DEVELOPER

Pemrograman Backend Developer

April 5, 2023
Teman Ngoding

Teman Ngoding tempat berbagi tutorial pemrograman
Read more

Categories

  • Berita
  • C++
  • Codeigniter
  • Events
  • Flutter
  • Golang
  • Java
  • Javascript
  • Laravel
  • MongoDB
  • News
  • Node JS
  • Pemrograman
  • PHP
  • Problem Solution
  • React JS
  • SQL
  • Tutorial
  • TypeScript
  • TypeScript
  • Video Codeigniter
  • Video Git
  • Video Laravel
  • Video Tutorial

Tags

ajax belajar golang belajar reactjs blog browser seluler Cara mendapatkan Uang dari Blog codeigniter codeigniter 3 codeigniter 4 codeigniter4 embed html Error Handling flutter flutter vs react native golang golang dasar html html basic html dasar infinite scroll javascript javascript tutorial laravel laravel 8 laravel 9 laravel9 load more ajax mongodb nodejs pdf pemrograman ajax pemrograman golang pemrograman php reactjs reactjs tutorial reactjs vs react native rest api rest api codeigniter 4 tutorial codeigniter 4 tutorial golang tutorial javascript tutorial laravel tutorial laravel 8 tutorial nodejs tutorial reactjs

Recent News

HTML Fundamentals – HTML Basic

HTML Fundamentals – HTML Basic

Mei 19, 2023
Pekerjaan Apa yang Akan Diganti oleh AI?

Pekerjaan Apa yang Akan Diganti oleh AI?

Mei 11, 2023

© 2022 Teman Ngoding.

No Result
View All Result
  • Home
  • Tutorial
    • Laravel
    • Codeigniter
    • PHP
    • Golang
    • Java
    • Javascript
    • React JS
    • SQL
    • Problem Solution
  • Video Tutorial
    • Video Laravel
    • Video Codeigniter
    • C++
    • Video Git
  • Events
  • Berita
  • Donate
  • Indonesia
    • English

© 2022 Teman Ngoding.

Login to your account below

Forgotten Password?

Fill the forms bellow to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In
  • English
  • Indonesia