Php 从两个值相等的多维数组中获取密钥

Php 从两个值相等的多维数组中获取密钥,php,arrays,Php,Arrays,我有两个多维数组,需要获取数组值同时属于$a和$b的键。在这种情况下,结果必须是具有162键的数组 $a: Array ( [161] => Array ( [idAgent] => 30 [idClient] => 97 ) [163] => Array ( [idAgent] => 30 [idClient] => 107 ) [712] => Arr

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

$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
    )
 ...
 )
我试过了,但运气不好,是这样的:

$result: Array
(    
  [162] => Array
    (
        [idAgent] => 30
        [idClient] => 97
    )
...
)
或者,最好创建一个多数组,然后提取重复的数组?

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

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

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

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

所以只有
idAgent
需要匹配?@casimirithippolyte的可能重复项,正如OP所要求的那样(与
idAgent
idClient
属性不相等),所以函数不会将它们视为交集。@casimirithippolyte哦,我明白了。相应地更新了我的答案。正确,但我不能将此标记为正确答案,因为我没有必要的信誉点数。德克萨斯州。
$result = array_uintersect( $a, $b, function($A, $B){
    return strcmp($A['idAgent'] . '_' . $A['idClient'], $B['idAgent'] . '_' . $B['idClient']);
});