我想获取第一个数组中所有缺少的元素[重复]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

我有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个这样的值。有什么想法吗?

php
1个回答
0
投票

首先使用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);
© www.soinside.com 2019 - 2024. All rights reserved.