PHP通过键比较两个关联数组

3
我是一个有用的助手,可以翻译文本。

我正在尝试比较两个PHP数组,它们具有不同的信息,但都有相同的键“id”,我正在尝试将其进行比较。

第一个数组:

   Array
(
    [0] => Array
        (
            [id] => 59
            [number] => 0002319411QT17D
            [type] => 2
            [rate] => 1
            [site] => 776
            [reading] => 0.00
            [activity] => 1
            [distance] => 0.000
        )

    [1] => Array
        (
            [id] => 60
            [number] => 0000149450TR36E
            [type] => 1
            [rate] => 1
            [site] => 777
            [reading] => 0.00
            [activity] => 1
            [distance] => 0.000
        )

    [2] => Array
        (
            [id] => 61
            [number] => 0000112211TR135
            [type] => 1
            [rate] => 2
            [site] => 777
            [reading] => 0.00
            [activity] => 1
            [distance] => 0.000
        )

)

接下来我有这个第二个数组:

Array
(
    [0] => Array
        (
            [id] => 59
            [emp_inv] => 1
            [emp_gen] => 1970-01-01 12:00:00
        )

    [2] => Array
        (
            [id] => 59
            [emp_inv] => 2
            [emp_gen] => 1970-01-01 12:00:00
        )

    [3] => Array
        (
            [id] => 59
            [emp_inv] => 3
            [emp_gen] => 1970-01-01 12:00:00
        )

)

我只想知道第一个数组中的[id]是否出现在第二个数组中。
例如,id为59在两个数组中都出现,但id为60则不是。
我尝试了各种PHP函数,如array_assoc来获取差异,但它只返回空数组,不确定这是否与它在另一个数组中有关。
希望有人能帮忙,谢谢 :)

你想要获取你的两个数组的差异吗? - aldrin27
不是说有什么区别,而是如果第一个数组中的某个id出现在第二个数组中。例如[id] => 59在两个数组中都出现了,但id 60没有出现,则返回true。 - Seán McCabe
为什么不用for循环呢? - raduation
你能否也贴出代码? - aldrin27
array_uintersect() 看起来非常方便。 - mickmackusa
1个回答

2

如果你使用的是 PHP 5.5 或更高版本,你可以使用 array_column() 函数来查找存在于两个数组中的 ID:

$commonIds = array_intersect(array_column($first, 'id'), array_column($second, 'id'));
示例。如果您使用早期版本的PHP,这里有另一个实现方式(来自PHP手册推荐) - 或者使用几个循环手动构建一些东西。

如果您想检查两个数组中是否存在相同的ID,只需执行$exists = (in_array(123, $commonIds)); // false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接