Объединить php-массив на основе двух уникальных значений

Я ищу способ сделать довольно нечетное слияние массива между многомерными массивами. Возьмем следующие два массива arrayOne и arrayTwo качестве примеров.

Я хотел бы объединить массивы в arrayThree , которые будут отображать элементы массивов, которые являются уникальными, если оба number и letter объединены уникальными. Он объединит значения из одного массива с другим, и если значение отсутствует, то оно будет содержать пустую строку. (см. arrayThree что я имею в виду)

Есть идеи?

 $arrayOne = array( array('number' => 1, 'letter' => 'a', 'qcol' => 'tennis'), array('number' => 1, 'letter' => 'b', 'qcol' => 'soccer'), array('number' => 2, 'letter' => 'a', 'qcol' => 'basketball'), array('number' => 2, 'letter' => 'b', 'qcol' => 'football'), array('number' => 3, 'letter' => 'a', 'qcol' => 'bowling'), array('number' => 3, 'letter' => 'b', 'qcol' => 'rugby') ); $arrayTwo = array( array('number' => 1, 'letter' => 'a', 'rval' => 'bus'), array('number' => 1, 'letter' => 'b', 'rval' => 'car'), array('number' => 2, 'letter' => 'a', 'rval' => 'truck'), array('number' => 2, 'letter' => 'b', 'rval' => 'plane'), array('number' => 4, 'letter' => 'b', 'rval' => 'boat') ); 

будет сливаться в:

 $arrayThree = array( array('number' => 1, 'letter' => 'a', 'rval' => 'bus', 'qcol' => 'tennis'), array('number' => 1, 'letter' => 'b', 'rval' => 'car', 'qcol' => 'soccer'), array('number' => 2, 'letter' => 'a', 'rval' => 'truck', 'qcol' => 'basketball'), array('number' => 2, 'letter' => 'b', 'rval' => 'plane', 'qcol' => 'football'), array('number' => 3, 'letter' => 'a', 'rval' => '', 'qcol' => 'bowling'), array('number' => 3, 'letter' => 'b', 'rval' => '', 'qcol' => 'rugby'), array('number' => 4, 'letter' => 'b', 'rval' => 'boat', 'qcol' => '') ); 

Related of "Объединить php-массив на основе двух уникальных значений"

 $arrayThree = array(); foreach ($arrayOne as $i) { $arrayThree[$i['number'] . $i['letter']] = $i + array('rval' => null); } foreach ($arrayTwo as $i) { $key = $i['number'] . $i['letter']; if (isset($arrayThree[$key])) { $arrayThree[$key]['rval'] = $i['rval']; } else { $arrayThree[$key] = $i + array('qcol' => null); } } $arrayThree = array_values($arrayThree);