PHP按键比较两个关联数组

时间:2015-08-26 00:46:03

标签: php arrays compare associative-array

我正在尝试比较两个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]出现在第二个数组中。

e.g。 [id] =>两个阵列中都出现了59,但是id 60没有出现。

我尝试过各种各样的PHP函数,例如array_assoc来获取差异,但它只是返回空白数组,不确定这是否有一些东西,因为它是另一个数组中的数组。

希望有人可以提供帮助,谢谢:)

1 个答案:

答案 0 :(得分:2)

您可以使用array_column()找到两个数组中存在的ID(如果您使用的是PHP 5.5或更高版本):

$commonIds = array_intersect(array_column($first, 'id'), array_column($second, 'id'));

Example。如果您使用的是早期版本的PHP here's an alternative implementation(从PHP手册中推荐) - 或者使用几个循环构建一些手册。

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