如何计算php中键和值之间的差异

时间:2017-10-05 14:13:12

标签: php arrays difference

我有两种类型的数组:

1:
$array1["a"][] = "value1";
$array1["a"][] = "value2";
$array1["b"][] = "value3";

2:
$array2["0"] = "a";

我现在需要的是以某种方式找到这两个数组之间的差异。我需要按键过滤掉array1,它位于array2值中。我尝试过以下操作:

array_diff(array_keys($array1), array_values($array2));

但是我在该行上收到以下错误: ErrorException Array to string conversion

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这样的东西?

foreach ($array1 as $key => $value)
   if( array_search ($key , $array2 ))
    unset($array1[$key]);

如果$ array1需要有值,你只需要将diff放在$ array1:

$array1 = array_diff(array_keys($array1), array_values($array2));

答案 1 :(得分:0)

根据您构建数组的方式,它应该可以工作。以下代码(基于您的问题)有效:

<?php
$array1=array("a" => array(),"a" => array(),"b" => array());
$array2=array("0"=>"a");
print_r(array_keys($array1));
echo("<br/>");
print_r(array_values($array2));
echo("<br/>");
print_r(array_diff(array_keys($array1), array_values($array2)));       
>

这导致:

Array ( [0] => a [1] => b )
Array ( [0] => a )
Array ( [1] => b )