Funkcje anonimowe w sortowaniu tablic
Założenie: Nauczymy się sortować tablicę obiektów lub tablicę asocjacyjną w PHP używając funkcji anonimowych do zdefiniowania kryteriów sortowania.
Krok po kroku:
- Przykład 1: Sortowanie tablicy liczb rosnąco.
$numbers = [3, 1, 4, 1, 5, 9, 2, 6]; sort($numbers); print_r($numbers);
Funkcja `sort()` sortuje tablicę liczb w miejscu (zmienia oryginalną tablicę). `print_r()` wyświetla zawartość tablicy.
- Przykład 2: Sortowanie tablicy asocjacyjnej po wartości.
$users = [ 'Jan' => 30, 'Anna' => 25, 'Piotr' => 35 ]; uasort($users, function ($a, $b) { return $a - $b; // Sortowanie rosnąco po wartości }); print_r($users);
Funkcja `uasort()` sortuje tablicę asocjacyjną zachowując klucze. Funkcja anonimowa `function ($a, $b) { return $a – $b; }` definiuje porównanie: zwraca wartość ujemną, jeśli $a < $b, 0 jeśli $a == $b, i dodatnią jeśli $a > $b.
- Przykład 3: Sortowanie tablicy obiektów po atrybucie.
class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } $users = [ new User('Jan', 30), new User('Anna', 25), new User('Piotr', 35) ]; usort($users, function ($a, $b) { return $a->age - $b->age; // Sortowanie po wieku }); foreach ($users as $user) { echo $user->name . ' (' . $user->age . ')
'; }Funkcja `usort()` sortuje tablicę obiektów. Funkcja anonimowa porównuje wiek użytkowników.
Ten przykład pokazuje podstawowe zastosowanie funkcji anonimowych w sortowaniu tablic w PHP. Zachęcamy do eksperymentowania z różnymi funkcjami porównującymi, aby opanować tę technikę.