array_flip() i array_reverse()

Nazwy tych funkcji są bardzo podobne znaczeniowo i dużo osób myli jedną z drugą. Prawda jest taka, że w praktyce funkcje te robią dwie różne rzeczy.

array_flip

Funkcja array_flip() faktycznie „odwraca”, ale nie tyle tablicę, co pary klucz – wartość. Najprościej mówiąc, array_flip() zwraca nam tablicę, w której wartościami są klucze z tablicy wejściowej, a kluczami wartości.
array array_flip (array $trans)
Należy pamiętać, że funkcja ta zadziała tylko dla wartości typu integer lub string. Jeśli wartość będzie innego typu, zostanie wygenerowane ostrzeżenie i zamiana nie nastąpi. Przykład:
$a = array(13 => 'foo', 10 => 'bar', 20 => 'baz', 15 => 'foo');
$b = array_flip($a);
print_r($b);
Powyższy przykład wyświetli:
Array
(
    [foo] => 15
    [bar] => 10
    [baz] => 20
)
Warto tutaj zwrócić uwagę również na to, że jeśli wartości w tablicy wejściowej się powtarzają, array_flip() bierze pod uwagę ostatnią z nich. W powyższym przypadku dwa razy występuje wartość ‘foo’, z tym że przypisana jest do dwóch różnych kluczy: 13 i 15. Jak widać, w tablicy wynikowej mamy parę foo => 15. Dodajmy teraz do tablicy wejściowej element, którego wartością będzie inna tablica:
$a = array(13 => 'foo', 5 => array(1,2,3), 10 => 'bar', 20 => 'baz', 15 => 'foo');
$b = array_flip($a);
print_r($b);
Wynikiem działania tego skryptu będzie to samo co wcześniej plus taki oto warning: Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! Dodatkowo zauważmy, że mimo wystąpienia błędu, działanie funkcji nie jest przerwane – wszystkie pary występujące po feralnym elemencie będą nadal zamieniane.

array_reverse

Natomiast funkcja array_reverse() rzeczywiście „odwraca” tablicę, tzn. wynikiem jej działania jest tablica, której wartości układają się odwrotnie w stosunku do tablicy wejściowej.
array array_reverse (array $array [, bool $preserve_keys = false])
Funkcja bierze tablicę $array i zwraca nową, której elementami są elementy tablicy wejściowej ułożone w odwrotnej kolejności. I drobny przykład:
$a = array(13 => 'foo', 10 => 'bar', 20 => 'baz');
$b = array_reverse($a);
 
print_r($b);
Powyższe wyświetli:
Array
(
    [0] => baz
    [1] => bar
    [2] => foo
)
Należy zauważyć tutaj, że klucze nie zostały zachowane. Aby tak się stało należy przy wywołaniu funkcji, jako drugi parametr podać true.

, ,

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">