czwartek,
Generowanie tablic za pomocą funkcji range()
Z pomocą funkcji range() w szybki sposób można generować wieloelementowe tablice. Najwięcej możliwości daje oczywiście połączenie efektów jej działania z innymi konstrukcjami językowymi.
Przykład 1
Podstawowe użycie funkcji range() wymaga podania wartości początkowej i końcowej. W przykładzie wygenerowano tablicę wypełnioną wartościami z zakresu 1-5.
$a = range(1,5);
print_r($a);
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
*/
Przykład 2
W PHP 5.0 dodano opcjonalny trzeci parametr funkcji range() oznaczający wartość, o którą różne są kolejne generowane elementy. W pierwszym przykładzie nie przekazano trzeciego argumentu i przyjęta została domyślna wartość 1. Tym razem trzeci argument wynosi 2. Dodatkowo w przykładzie zaprezentowano możliwość generowania liczb ujemnych.
$a = range(-4,4,2);
print_r($a);
/*
Array
(
[0] => -4
[1] => -2
[2] => 0
[3] => 2
[4] => 4
)
*/
Przykład 3
Funkcja range() może generować wartości malejące, wystarczy przekazać odpowiednie argumenty. Możliwość tą dodano w PHP 4.1.0.
$a = range(10,2,2);
print_r($a);
/*
Array
(
[0] => 10
[1] => 8
[2] => 6
[3] => 4
[4] => 2
)
*/
Przykład 4
Wartość przyrostu nie musi być liczbą całkowitą.
$a = range(2.1,3.1,.2);
print_r($a);
/*
Array
(
[0] => 2.1
[1] => 2.3
[2] => 2.5
[3] => 2.7
[4] => 2.9
[5] => 3.1
)
*/
Przykład 5
Funkcja range() doskonale radzi sobie ze znakami. W przykładzie wygenerowano co czwartą literę z zakresu A-Z. Pod uwagę brane są znaki ASCII (nie będzie np. polskich znaków).
$a = range('A','Z',4);
print_r($a);
/*
Array
(
[0] => A
[1] => E
[2] => I
[3] => M
[4] => Q
[5] => U
[6] => Y
)
*/
Przykład 6
Ostatni przykład to prezentacja możliwości zastosowania funkcji range() w bardziej złożonych konstrukcji językowych. Początkowo generowana jest najprostsza tablica pięcioelementowa (range()), a następnie z pomocą funkcji anonimowej każdy z jej elementów jest zwiększany o liczbę pseudolosową (rand()). W efekcie wartości w wygenerowanej tablicy są w pewnym stopniu przypadkowe, dodatkowo mogą się one powtarzać. Wygenerowane liczby oczywiście będą ulegać zmianie w każdym wywołaniu prezentowanego kodu.
$a = array_map(function($x){return $x+rand(0,10);},range(1,5));
print_r($a);
/*
Array
(
[0] => 9
[1] => 12
[2] => 7
[3] => 5
[4] => 5
)
*/