【发布时间】:2018-12-07 14:08:51
【问题描述】:
我有两个多维数组。两个数组几乎相同,只是其中一个数组的值在另一个数组中不存在。我正在使用的数组是:
数组1
Array
(
[0] => Array
(
[dexcode] => BeS712210
)
[1] => Array
(
[dexcode] => De 48245
)
[2] => Array
(
[dexcode] => All50481
)
[3] => Array
(
[dexcode] => Bis1016338
)
[4] => Array
(
[dexcode] => S-T41471
)
[5] => Array
(
[dexcode] => Ron35844
)
[6] => Array
(
[dexcode] => Lin10961
)
[7] => Array
(
[dexcode] => Tip295926
)
[9] => Array
(
[dexcode] => SLN893827
)
[10] => Array
(
[dexcode] => Fen1016241
)
[11] => Array
(
[dexcode] => Aut331661
)
[12] => Array
(
[dexcode] => Pro39613
)
[13] => Array
(
[dexcode] => Com920158
)
[14] => Array
(
[dexcode] => Sma21322
)
[15] => Array
(
[dexcode] => Bev121157
)
[16] => Array
(
[dexcode] => Cit3043324
)
[17] => Array
(
[dexcode] => Que2182100
)
)
数组2:
Array
(
[0] => Array
(
[dexcode] => BeS712210
)
[1] => Array
(
[dexcode] => De 48245
)
[2] => Array
(
[dexcode] => All50481
)
[3] => Array
(
[dexcode] => Bis1016338
)
[4] => Array
(
[dexcode] => S-T41471
)
[5] => Array
(
[dexcode] => Ron35844
)
[6] => Array
(
[dexcode] => Lin10961
)
[7] => Array
(
[dexcode] => Tip295926
)
[9] => Array
(
[dexcode] => SLN893827
)
[10] => Array
(
[dexcode] => Fen1016241
)
[11] => Array
(
[dexcode] => Aut331661
)
[12] => Array
(
[dexcode] => Pro39613
)
[13] => Array
(
[dexcode] => Com920158
)
[14] => Array
(
[dexcode] => Sma21322
)
[15] => Array
(
[dexcode] => Bev121157
)
[16] => Array
(
[dexcode] => Que2182100
)
)
不匹配的值:
[16] => Array
(
[dexcode] => Cit3043324
)
使用 PHP,我尝试获取不匹配的值,如下所示:
$a1 =array_unique($all_codes,SORT_REGULAR);
$a2 =array_unique($matches,SORT_REGULAR);
$results = check_diff_multi($a1, $a2);
function check_diff_multi($array1, $array2){
$results = array();
foreach($array1 as $key => $val) {
if(isset($array2[$key])){
if(is_array($val) && $array2[$key]){
$result[$key] = check_diff_multi($val, $array2[$key]);
}
} else {
$results[$key] = $val;
}
}
return array_unique($results,SORT_REGULAR);
}
$a1 是我在上面发布的第一个包含不同值的数组。 $a2 是第二个。
应该将不同的值添加到 $results 变量中。
当我像这样检查 $results 中的内容时:
print '<pre>';
print_r($results);
print '</pre>';
我得到这个结果:
Array
(
[17] => Array
(
[dexcode] => Que2182100
)
)
似乎只选择最后一个值。有谁知道为什么会这样?
【问题讨论】:
-
你的
if(is_array($val) && $array2[$key]){条件对我来说很奇怪:不应该是if(is_array($val) && is_array($array2[$key])){吗?
标签: php arrays multidimensional-array