Bycie swatką lub swatem w życiu na pierwszy rzut oka wydaje się prostym i wdzięcznym zajęciem. Jeśli para ma się ku sobie, sprawa załatwiona, gorzej jeśli dwa "elementy" nijak nie chcą się zejść.

Ostatnio przykleiło się do mnie podobne zadanie, ale na szczęście nie w życiu, choć i tu perturbacje były spore. Miałem potrzebę połączenia dwóch tablic, z których jedna z nich zawierała elementy na pozycjach nieparzystych, a druga na pozycjach parzystych. Problem wydaje się prosty, ale celem było otrzymanie tablicy, w której kolejno na pozycje nieprzyste wpadają elementy z tablicy "nieparzystej", a na pozycje parzyste elementy z tablicy "parzystej". No i nadal problem nie wydaje się skomplikowany...
Jednak jest jeszcze jedna kluczowa (sic!) kwestia, mianowcie obydwie tablice były asocjacyjne, a klucze i kolejność występowania elementów w każdej z nich musiała być odwzorowana w tabeli docelowej.

Podsumowując, założenia są następujące:

  • mamy dwie tablice źródłowe,
  • obydwie tablice są asocjacyjne,
  • obydwie tablice są tej samej długości,
  • na pozycjach, które nas nie interesują mogą wystąpić dowolne wartości,
  • klucze mają być zachowane,
  • kolejność ma być zachowana.

Przykładowe tablice źródłowe:

$array1 = [23 => 'a', 14 => null, 1 => 'b', 56 => ''];
$array2 = [2 => 'xxx', 6 => 'c', 11 => null, 'o1' => 'd'];

A docelowa ma wyglądać tak:

$array = [23 => 'a', 6 => 'c', 1 => 'b', 'o1' => 'd'];