Pengurutan urutan alami
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 24 dari 68.
Meskipun fungsi pengurutan standar PHP bekerja dengan baik untuk sebagian besar kasus, fungsi tersebut dapat menghasilkan hasil yang tidak terduga saat mengurutkan string yang berisi angka. Fungsi natsort() mengatasi masalah ini dengan menggunakan algoritma "pengurutan alami" yang mengurutkan string sesuai dengan urutan yang biasanya diharapkan manusia.
Perhatikan contoh ini dengan nama file:
<?php
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];
// sort() biasa menghasilkan: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);
print_r($files);
// Atur ulang array
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];
// natsort() menghasilkan: file1.txt, file2.txt, file10.txt, file20.txt
natsort($files);
print_r($files);
?>Perbedaannya sangat penting: sort() biasa membandingkan string karakter demi karakter, jadi "file10.txt" muncul sebelum "file2.txt" karena "1" muncul sebelum "2" dalam ASCII. Namun, natsort() mengenali bagian numeriknya dan mengurutkannya secara numerik, sehingga "file2.txt" muncul sebelum "file10.txt" seperti yang kamu harapkan secara alami.
Seperti fungsi pengurutan PHP lainnya, natsort() memodifikasi array asli secara langsung. Fungsi ini sangat berguna untuk mengatur daftar file, nomor versi, atau data apa pun yang string-nya berisi angka dan perlu diurutkan secara numerik, bukan alfabetis.
Tantangan
MudahKamu akan menerima satu input: sebuah array nomor versi perangkat lunak dalam format JSON. Baca input, ubah string JSON menjadi array, gunakan natsort() untuk mengurutkan nomor versi dalam urutan alami, lalu tampilkan array yang sudah diurutkan menggunakan print_r().
Format input: Satu baris berisi array JSON dari string versi (contoh: ["v1.10","v1.2","v1.20","v1.3"])
Output yang diharapkan: Array yang sudah diurutkan dalam urutan alami, ditampilkan menggunakan print_r()
Coba sendiri
<?php
// Baca input
$input = fgets(STDIN);
// Ubah string JSON menjadi array
$versions = (array)json_decode($input, true);
// TODO: Tulis kodemu di bawah untuk mengurutkan array menggunakan natsort()
// Tampilkan array yang sudah diurutkan sebagai output
print_r($versions);
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Fungsi Lanjutan
Fungsi AnonimClosure dan 'use'Fungsi PanahFungsi CallbackMenggunakan 'call_user_func'Fungsi VariabelMengirim dengan ReferensiFungsi RekursifUlasan: Ragam Fungsi4Array Multidimensi
Membuat array 2DMengakses Elemen array 2DMengubah Elemen array 2DMelakukan Perulangan dengan loop Bersarangarray Asosiatif 2DRekap: Latihan Kisi Sederhana2Manipulasi array Lanjutan
Menambahkan dengan 'array_push'Menghapus dengan 'array_pop'Menambahkan dengan 'array_unshift'Menghapus dengan 'array_shift'Menggabungkan array berindeksMenggabungkan array asosiatifMengambil bagian dengan 'array_slice'Nilai dengan 'in_array'Kunci dengan 'array_search'Rekap: Latihan playlist3Mengurutkan array
Urutkan array berindeks secara menaikUrutkan array berindeks secara menurunUrutkan assoc array berdasarkan nilaiUrutkan assoc array berdasarkan kunciPengurutan urutan alamiPengurutan khusus dengan 'usort'Rangkuman: Pengurutan papan peringkatLatihan sendiri: Compiler PHP online