此问题已经在这里有了答案:
我有2个数组。
$first = Array
(
[01/10/2019] => Array
(
[0] => 21498226
[1] => 21497647
[2] => 21497649
[3] => 21497635
[4] => 21497636
[5] => 21497637
[6] => 21497728
[7] => 21497822
[8] => 21498028
[9] => 21497638
[10] => 21497738
)
)
$second = Array
(
[01/10/2019] => Array
(
[0] => 21498226
[1] => 21497647
[2] => 12345678
[3] => 87654321
[4] => 21497636
[5] => 21497637
[6] => 21497728
[7] => 21497822
[8] => 21498028
[9] => 21497638
)
)
我已编写此代码
$notPresent = [];
$notPresent = array_combine(
array_keys($first),
array_map(function ($key, $values) use ($second) {
if (array_key_exists($key, $second)) {
return array_diff($values, $second[$key]);
}
return $values;
}, array_keys($first), array_values($first))
);
我想让$ first缺少所有元素。但是这段代码只返回3个值,而我有4个这样的值。有什么想法吗?
首先使用array_values()
设置数组索引
$first = array_values($first);
$second = array_values($second);
您将获得下面的数组
Array
(
[0] => Array
(
[0] => 21498226
[1] => 21497647
[2] => 21497649
[3] => 21497635
[4] => 21497636
[5] => 21497637
[6] => 21497728
[7] => 21497822
[8] => 21498028
[9] => 21497638
[10] => 21497738
)
)
现在您可以使用它的第一个索引
$first = $first[0];
$second = $second[0];
现在您可以使用array_diff()
查找差异:
$data = array_diff($first[0],$second[0]);
例如:
$first = array_values($first);
$second = array_values($second);
$first = $first[0];
$second = $second[0];
$data = array_diff($first,$second);