我有两种类型的数组:
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
有什么想法吗?
答案 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 )