Menu
CoddyTech

Pengurutan khusus dengan 'usort'

Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 25 dari 68.

Ketika fungsi pengurutan bawaan PHP tidak memenuhi kebutuhan spesifikmu, fungsi usort() memberikan fleksibilitas penuh dengan memungkinkanmu menentukan secara tepat cara elemen dibandingkan dan diurutkan. Fungsi ini menerima array-mu dan fungsi perbandingan khusus yang kamu tulis untuk menentukan logika pengurutan.

Fungsi perbandingan menerima dua elemen dari array dan harus mengembalikan bilangan bulat: bilangan negatif jika elemen pertama harus berada sebelum elemen kedua, nol jika keduanya sama, atau bilangan positif jika elemen pertama harus berada setelah elemen kedua.

<?php
function compareByLength($a, $b) {
    return strlen($a) - strlen($b);
}

$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// Output: Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>

Dalam contoh ini, fungsi perbandingan menghitung selisih panjang string. Saat strlen($a) - strlen($b) menghasilkan bilangan negatif, artinya string pertama lebih pendek dan harus ditempatkan lebih awal dalam array yang sudah diurutkan.

Seperti fungsi pengurutan PHP lainnya, usort() langsung mengubah array asli. Fungsi yang andal ini membuka berbagai kemungkinan untuk mengurutkan berdasarkan kriteria apa pun yang dapat kamu bayangkan, baik panjang string, logika bisnis kustom, maupun perbandingan kompleks berdasarkan beberapa field.

challenge icon

Tantangan

Mudah

Kamu akan menerima satu input: array harga produk dalam format JSON. Baca input, ubah string JSON menjadi array, buat fungsi perbandingan yang mengurutkan harga dari yang terkecil ke yang terbesar, gunakan usort() dengan fungsi perbandinganmu untuk mengurutkan array, lalu cetak array yang sudah diurutkan menggunakan print_r().

Format input: Satu baris yang berisi array angka dalam JSON (contoh: [29.99,15.50,42.00,8.75,33.25])

Output yang diharapkan: Array yang diurutkan berdasarkan harga dari yang terkecil ke yang terbesar, ditampilkan menggunakan print_r()

Coba sendiri

<?php
// Baca input
$input = fgets(STDIN);
$prices = json_decode($input, true);

// TODO: Buat fungsi pembanding dan gunakan usort() untuk mengurutkan array

// Tampilkan array yang sudah diurutkan
print_r($prices);
?>
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler PHP online