从两个值相等的多维数组中获取键

时间:2017-03-01 17:58:16

标签: php arrays

$a: Array
(
[161] => Array
    (
        [idAgent] => 30
        [idClient] => 97
    )

[163] => Array
    (
        [idAgent] => 30
        [idClient] => 107
    )

[712] => Array
    (
        [idAgent] => 12
        [idClient] => 349
    )

[718] => Array
    (
        [idAgent] => 12
        [idClient] => 57
    )

[721] => Array
    (
        [idAgent] => 9
        [idClient] => 236
    )

[729] => Array
    (
        [idAgent] => 12
        [idClient] => 118
    )

[739] => Array
    (
        [idAgent] => 20
        [idClient] => 483
    )
...
)

$b: Array
(
[160] => Array
    (
        [idAgent] => 31
        [idClient] => 926
    )

[162] => Array
    (
        [idAgent] => 30
        [idClient] => 97
    )
 ...
 )

我有两个多维数组,我需要获取其数组值同时属于$ a和$ b的键。在这种情况下,结果必须是具有162键的数组。

$result: Array
(    
  [162] => Array
    (
        [idAgent] => 30
        [idClient] => 97
    )
...
)

我试过了,但没有运气,这样的事情:

array_intersect_uassoc( $a, $b, function ($A, $B){
    return ($A['idAgent'] - $B['idAgent']);
});

或者,最好创建一个多数组,然后提取重复数据?

1 个答案:

答案 0 :(得分:1)

您可以只使用array_uintersect(通过回调函数比较数组的交集)。

我的示例中的strcmp函数只是为了更容易比较字符串。

如果您需要搜索idAgentidClient的唯一组合,请将它们作为字符串放在一起进行比较。

$result = array_uintersect( $a, $b, function($A, $B){
    return strcmp($A['idAgent'] . '_' . $A['idClient'], $B['idAgent'] . '_' . $B['idClient']);
});