【问题标题】:get key from two multidimensional array whose values are equal从两个值相等的多维数组中获取键
【发布时间】:2017-07-21 04:42:00
【问题描述】:
$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']);
});

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

【问题讨论】:

标签: php arrays


【解决方案1】:

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

我的示例中的strcmp 函数只是为了更轻松地比较字符串。

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

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

【讨论】:

  • @CasimiretHippolyte 不等于 OP 要求的值(与 idAgentidClient 属性),因此函数不会将它们视为交集。
  • @CasimiretHippolyte 哦,我明白了。相应地更新了我的答案。
  • 正确,但我无法将此标记为正确答案,因为我没有必要的声望点。发送。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 2022-07-07
  • 2019-09-17
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
相关资源
最近更新 更多