Sortowanie tablic z uwzględnieniem specyficznych potrzeb aplikacji – sortowanie hybrydowe

Założenie: Stworzymy funkcję sortującą tablicę ogłoszeń, uwzględniającą datę publikacji, cenę, lokalizację i kategorię.

Krok po kroku:

  1. Przygotowanie danych: Definiujemy tablicę z przykładowymi ogłoszeniami.
  2. 
    $ogloszenia = [
        ['tytul' => 'Mieszkanie', 'data' => '2024-02-28', 'cena' => 500000, 'lokalizacja' => 'Warszawa', 'kategoria' => 'nieruchomosci'],
        ['tytul' => 'Samochód', 'data' => '2024-02-27', 'cena' => 30000, 'lokalizacja' => 'Kraków', 'kategoria' => 'motoryzacja'],
        ['tytul' => 'Dom', 'data' => '2024-02-29', 'cena' => 800000, 'lokalizacja' => 'Warszawa', 'kategoria' => 'nieruchomosci'],
        ['tytul' => 'Motocykl', 'data' => '2024-02-26', 'cena' => 15000, 'lokalizacja' => 'Wrocław', 'kategoria' => 'motoryzacja']
    ];
    				
  3. Funkcja sortująca: Tworzymy funkcję `sortujOgloszenia`, która przyjmuje tablicę ogłoszeń i kryterium sortowania.
  4. 
    function sortujOgloszenia($ogloszenia, $kryterium) {
        usort($ogloszenia, function ($a, $b) use ($kryterium) {
            if ($a[$kryterium] == $b[$kryterium]) return 0;
            return ($a[$kryterium] < $b[$kryterium]) ? -1 : 1;
        });
        return $ogloszenia;
    }
    				
  5. Sortowanie wg daty: Używamy funkcji `sortujOgloszenia` do posortowania tablicy wg daty publikacji.
  6. 
    $ogloszeniaPosortowaneWgDaty = sortujOgloszenia($ogloszenia, 'data');
    print_r($ogloszeniaPosortowaneWgDaty);
    				
  7. Sortowanie wg ceny: Analogicznie sortujemy wg ceny.
  8. 
    $ogloszeniaPosortowaneWgCeny = sortujOgloszenia($ogloszenia, 'cena');
    print_r($ogloszeniaPosortowaneWgCeny);
    				
  9. Dodatkowe kryteria: Można rozszerzyć funkcję o bardziej złożone kryteria sortowania, np. uwzględniając wagę poszczególnych kryteriów.

Ten przykład pokazuje podstawy sortowania tablic w PHP. Zachęcamy do eksperymentowania z różnymi kryteriami sortowania i rozwijania funkcji `sortujOgloszenia` o bardziej zaawansowane funkcjonalności.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *