我可以通过执行两次来反转diff_assoc_array()吗?

时间:2011-07-31 03:46:20

标签: php arrays algorithm diff

在阵列上运行array_diff_assoc()两次会给我所有非唯一条目吗?

$array3 = array_diff_assoc($array1, $array2);
$array4 = array_diff_assoc($array1, $array3);
var_dump($array4);

2 个答案:

答案 0 :(得分:6)

假设:

  • A $array1
  • 中的条目集
  • B $array2
  • 中的条目集

B 将由以下内容组成:

  • B' B 中的所有条目 A
  • B'' B 中不在 A 中的所有条目。

$array3diff_assoc_array($array1, $array2),操作 A \ B ,会减少如下:

  • (A \ B')∩(A \ B'')
  • (A∩¬B')∩A
  • A∩¬B'

$array4diff_assoc_array($array1, $array3),操作 A \(A∩¬B'),其减少如下:

  • A∩¬(A∩¬B')
  • A∩(¬A∪B')
  • A∩B

因此,是的,最终结果将是两个数组共有的项目。

答案 1 :(得分:0)

解决了......

<?php
  $array1 = array(0, 1, 2);
  $array2 = array("00", "01", 2);
  $array3 = array_diff_assoc($array1, $array2);
  $array4 = array_diff_assoc($array1, $array3);
  var_dump($array3);
  echo "<br><br>";
  var_dump($array4);
?>