【问题标题】:PHP Associative Arrays Intersection returns two elements instead of onePHP Associative Arrays Intersection 返回两个元素而不是一个
【发布时间】:2014-10-10 18:54:17
【问题描述】:

我有两个关联数组如下

    Array
(

    [0] => Array
        (
            [description] => aaaaaa
            [value] => 11111
            [id] => 14
        )

    [1] => Array
        (
            [description] => dddddd
            [value] => 44444
            [id] => 0
        )

)




Array
(

    [0] => Array
        (
            [id] => 14
            [value] => 11111
            [description] => aaaaaa
        )

    [1] => Array
        (
            [id] => 15
            [value] => 222222
            [description] => bbbbbb
        )

    [2] => Array
        (
            [id] => 16
            [value] => 333333
            [description] => cccccc
        )

)

我得到的结果是

Array
(

    [0] => Array
        (
            [description] => aaaaaa
            [value] => 11111
            [id] => 14
        )

    [1] => Array
        (
            [description] => dddddd
            [value] => 44444
            [id] => 0
        )

)

注意dddd 在第一个数组中可用,但在第二个数组中不可用。

我正在使用array_intersect_assoc( $array1, $array2 ) 函数。 请帮忙。返回这样的结果根本不合逻辑

【问题讨论】:

  • 这里很清楚你想要实现什么,这个函数“array_intersect_assoc”计算关联数组的交集,并附加索引检查。此外,我看到的还有多维数组,请注意
  • @mubo 他需要从两个数组中获取重复记录
  • @sasikanth 完全正确!只有重复的,也许它正在丢失它,因为它是一个多维数组比较

标签: php arrays


【解决方案1】:

使用下面的代码

$intersect = array_uintersect($arr1, $arr2, 'compareDeepValue');
 print_r($intersect);

 function compareDeepValue($val1, $val2)
 {
  return strcmp($val1['value'], $val2['value']);
 }

【讨论】:

    【解决方案2】:

    如果您启用 php 通知,您将看到下一个

    Notice: Array to string conversion
    

    你可以得到关于你的问题的详尽答案here

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多