我有2x多维数组'如下所示:
$x = [
0=>[
'a',
'b'
],
1=>[
'c',
'd'
],
2=>[
'e',
'f'
]
];
$y = [
0=>[
'b',
'a'
],
1=>[
'g',
'h'
],
2=>[
'i',
'j'
]
];
我想将2x数组' s(x和y)与这样的输出合并
$xy = [
0=>[
'c',
'd'
],
1=>[
'e',
'f'
],
2=>[
'g',
'h'
],
3=>[
'i',
'j'
]
];
如您所见,$x[0]
等于a,b
而$y[0]
等于b,a
并且它们是重复的。我想知道a,b是否可能与b一样,a,我不知道如何让我的代码看起来像这样。我想消除我的重复数组(a,b!= b,a)。不允许任何重复,这可能吗?
答案 0 :(得分:0)
这应该可以准确地告诉您所要求的内容。我使用了多个foreach()
循环来测试该值是否首先是$Y
数组的一部分,如果是,则使用unset()
从两个数组中删除。然后我将两个数组合并在一起,删除了空数组维度并重置密钥数。
$x = [0=>['a','b'],1=>['c','d'],2=>['e','f']];
$y = [ 0=>['b','a'],1=>['g','h'],2=>['i','j']];
foreach ($x as $key=>$value) {
foreach($x[$key] as $k=>$v) {
$search = array_search($v, $y[$key], true); //Find if value is equal to value in Y using a search
if ($search !== false) { //If so then remove value
unset($y[$key][$search]); //Remove from Array Y
unset($x[$key][$search]); //Remove from Array X
}
}
}
$newArray = array_merge($x, $y); //Merge two arrays together
foreach($newArray as $key => $value) { //Remove empty dimensions from Array
if (count($newArray[$key]) <= 0) {
unset($newArray[$key]);
}
}
$newArray = array_values($newArray); //Re-Number Keys so there in order
var_dump($newArray); //Array Output
<强>输出强>
{
[0] => array(2) {
[0] => string(1)
"c" [1] => string(1)
"d"
}[1] => array(2) {
[0] => string(1)
"e" [1] => string(1)
"f"
}[2] => array(2) {
[0] => string(1)
"g" [1] => string(1)
"h"
}[3] => array(2) {
[0] => string(1)
"i" [1] => string(1)
"j"
}
}
<强> 修改 强>
添加unset()
以从两个数组中删除值,因为它提到您 NOT 喜欢从新数组中显示的任一数组中重复数据。 < / p>