Łączenie tablic

Łączenie tablic
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,
Mam, jak podejrzewam, tendencyjne pytanie.
Istnieją sobie dwie tablice, przykładowo $array1(1, 2, 3, 4) oraz $array2(3,4,5,6).

Czy istnieje jakaś pojedyncza funkcja, która da mi wynik $array(1,2,3,4,5,6) - czyli połączenie pierwszej tablicy oraz elementów, które występują w drugiej tablicy, a których w pierwszej nie było?

Problem obszedłem stosując array_merge($array1, array_diff($array2,$array1)), jednak zastanawia mnie czy jest to najbardziej optymalne rozwiązanie oraz czy nie istnieje pojedyncza funkcja, która sama w sobie wykonuje obydwa te kroki i da mi poszukiwany przeze mnie wynik?

Z góry dziękuję za pomoc,
Vud.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Nie, nie istnieje żadna taka wbudowana funkcja (w rozumieniu pojedynczego wywołania).

jednak zastanawia mnie czy jest to najbardziej optymalne rozwiązanie

Zastanawianie się tutaj nie pomoże - zrób benchmark, a będziesz wiedział.

  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki serdeczne, tylko czy jest sens robić benchmark, skoro poszukiwanego wyniku potrzebuję, a nie mam innej metody do porównania, by go uzyskać? Jedynie dla samej wiedzy, dla siebie.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Jak nie ma innej metody? ;-)

Są jeszcze co najmniej:
1.array_unique(array_merge($a, $b))
2.Trick z array_count_values :)
3.Zwyczajny for/while/etc.

  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki za sugestie ;)
Pierwsza Twoja propozycja mi przyszła do głowy, ale już po fakcie, a jako niezarejestrowany użytkownik raczej nie mogę edytować swoich odpowiedzi. Teraz już będzie co porównywać ;) Choć przy wielkości tablicy wynikowej nieprzekraczającej 1000 elementów (zakładam 600-700) pewnie będą to w ogóle niewielkie różnice.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Poniżej 100k elementów imho nie ma sensu porównywać (na standardowych procesorach), wyjdzie w praniu ;-)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.