我正在寻找一种在多维数组之间进行非常奇怪的数组合并的方法。以下面两个数组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' => '')
);
答案 0 :(得分:3)
$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);