PHP - Różne podejścia do łączenia tablic
Jakiś czas temu przyszło mi połączyć dwie tablice w PHP. Prosta sprawa, jednak to dopiero błędne podejście do tej operacji uświadomiło mi, że połączyć tablice można na kilka sposobów i każdy z nich da nieco inny rezultat. Stąd ta notatka.
Co mamy do wyboru?
Chciałbym tutaj pokazać trzy różne sposoby na połączenie tablic w PHP i pokazać różnice między nimi. Będą to funkcje array_merge(), array_push() oraz operator dodawania +. W takiej też kolejności chciałbym je omówić, ponieważ wydaje mi się, że tak wygląda hierarchia ich najczęstszego używania.Nim jednak przejdziemy do sedna sprawy, zróbmy wstępne założenia do przykładów, na których będziemy się opierać. Dajmy na to, że mamy dwie tablice z imionami kobiet i mężczyzn:
$mezczyzni = array("Jan", "Łukasz", "Tomasz", "Mateusz", "Dawid");
Metoda array_merge()
Jeżeli zależy nam na połączeniu tablic, w sensie dopisania elementów z jednej na końcu tej drugiej, to merge_array() jest odpowiednią funkcją. Wykonajmy poniższy kod:print_r($merge);
Array ( [0] => Agnieszka [1] => Marta [2] => Weronika [3] => Jan [4] => Łukasz [5] => Tomasz [6] => Mateusz [7] => Dawid )
Metoda array_push()
O ile funkcja array_merge() dodała wszystkie elementy z jednej tablicy na koniec drugiej, o tyle funkcja array_push() ma za zadanie dopisać do tablicy, przyjmowanej jako pierwszy argument funkcji, wartości podane w kolejnych argumentach. Na pierwszy rzut oka, można by pomyśleć, że gdy zechcemy do tablicy $kobiety dopisać tablicę $mezczyzni, otrzymamy to samo co w poprzednim przykładzie. Tak się jednak nie stanie. Tablica $mezczyzni zostaną potraktowane jako jeden obiekt, który zostanie przypisany jednemu elementowi tablicy $kobiety. Spójrzmy na poniższy kod i jego rezultat:print_r($kobiety);
Array ( [0] => Agnieszka [1] => Marta [2] => Weronika [3] => Array ( [0] => Jan [1] => Łukasz [2] => Tomasz [3] => Mateusz [4] => Dawid ) )
Jak widać, cała tablica $mezczyzni została przypisana jednemu elementowi tablicy $kobiety. Dla porównania, wykonajmy jeszcze poniższe polecenie:
print_r($kobiety);
Array ( [0] => Agnieszka [1] => Marta [2] => Weronika [3] => Jan [4] => Łukasz [5] => Tomasz [6] => Mateusz [7] => Dawid )
Operator dodawania +
Operacja dodania do siebie dwóch tablic da jeszcze inny efekt, niż te, które mogliśmy zobaczyć w powyższych przykładach. Tym razem będziemy mieli do czynienia niejako z operacją dopełnienia jednej tablicy do drugiej. Tablica $kobiety zawiera 3 elementy, podczas gdy $mezczyzni ma ich 5. Zatem wykonanie operacji:print_r($dodanie);
Array ( [0] => Agnieszka [1] => Marta [2] => Weronika [3] => Mateusz [4] => Dawid )
Komentarze (1)