Menu
Coddy logo textTech

Doğal Sıralama (Natural Order)

Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 24 / 68.

PHP'nin standart sıralama fonksiyonları çoğu durum için iyi çalışsa da, sayı içeren dizeleri sıralarken beklenmedik sonuçlar üretebilirler. natsort() fonksiyonu, dizeleri insanların doğal olarak bekleyeceği şekilde sıralayan bir "doğal sıralama" algoritması kullanarak bu sorunu çözer.

Dosya adlarını içeren bu örneği inceleyin:

<?php
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];

// Normal sort() şunları üretir: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);
print_r($files);

// Diziyi sıfırla
$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];

// natsort() şunları üretir: file1.txt, file2.txt, file10.txt, file20.txt
natsort($files);
print_r($files);
?>

Fark kritiktir: normal sort() dizeleri karakter karakter karşılaştırır, bu nedenle ASCII'de "1", "2"den önce geldiği için "file10.txt", "file2.txt"den önce gelir. Ancak, natsort() sayısal kısımları tanır ve bunları sayısal olarak sıralar; "file2.txt"i doğal olarak bekleyeceğiniz gibi "file10.txt"den önce yerleştirir.

Diğer PHP sıralama fonksiyonları gibi, natsort() orijinal diziyi doğrudan değiştirir. Bu, onu dosya listelerini, sürüm numaralarını veya dizelerin alfabetik yerine sayısal olarak sıralanması gereken gömülü sayılar içerdiği herhangi bir veriyi düzenlemek için özellikle yararlı kılar.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Bir girdi alacaksınız: JSON formatında bir yazılım sürüm numaraları dizisi. Girdiyi okuyun, JSON dizesini bir diziye dönüştürün, sürüm numaralarını doğal sıralamaya göre sıralamak için natsort() kullanın ve sıralanmış diziyi print_r() kullanarak yazdırın.

Girdi formatı: Sürüm dizelerinden oluşan bir JSON dizisi içeren tek bir satır (örnek: ["v1.10","v1.2","v1.20","v1.3"])

Beklenen çıktı: print_r() kullanılarak görüntülenen, doğal sıralamadaki sıralanmış dizi

Kopya kağıdı

natsort() fonksiyonu, dizeleri "doğal sıralama" (natural ordering) kullanarak sıralar; bu, insanların sayı içeren dizelerin sıralanmasını doğal olarak beklediği yöntemdir.

Standart sort() dizeleri karakter karakter karşılaştırırken, natsort() sayısal kısımları tanır ve onları sayısal olarak sıralar:

$files = ["file1.txt", "file10.txt", "file2.txt", "file20.txt"];

// Standart sort() şunları üretir: file1.txt, file10.txt, file2.txt, file20.txt
sort($files);

// natsort() şunları üretir: file1.txt, file2.txt, file10.txt, file20.txt
natsort($files);
print_r($files);

Diğer PHP sıralama fonksiyonları gibi, natsort() orijinal diziyi doğrudan değiştirir. Dosya listeleri, sürüm numaraları veya sayısal olarak sıralanması gereken gömülü sayılar içeren her türlü veri için özellikle yararlıdır.

Kendin dene

<?php
// Girdiyi oku
$input = fgets(STDIN);

// JSON dizesini diziye dönüştür
$versions = (array)json_decode($input, true);

// YAPILACAK: natsort() kullanarak diziyi sıralamak için kodunuzu aşağıya yazın


// Sıralanmış diziyi yazdır
print_r($versions);
?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler