Я ищу способ сделать довольно нечетное слияние массива между многомерными массивами. Возьмем следующие два массива 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' => '') );
$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);