我正在尝试匹配如下所示的2个数组。
$system = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$public = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
我的问题是,我需要两个数组的数组键具有相同的值和相同的计数。
意思是:
// passes - both arrays have the same key values and same counts of each key
$system = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$public = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
// fails - $public does not have 'blue' => 1
$system = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$public = array('red' => 2, 'green' => 3, 'purple' => 4);
// should fail - $public has 2 'blue' => 1
$system = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$public = array('blue' => 1, 'blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
我尝试使用array_diff_keys
,array_diff
和其他php函数,但是没有一个函数可以捕获具有相同值的额外键(即,如果'blue'=> 1,重复它仍然可以通过)
什么是解决此问题的好方法?
答案 0 :(得分:0)
在PHP中用相同的键编写两个值时,第二个将覆盖第一个的值(这不是错误)。以下是我在PHP交互式CLI(使用php -a
运行)上所做的事情:
php > $x = ["x" => 1, "x" => 2, "y" => 2];
php > var_dump($x);
array(2) {
["x"]=>
int(2)
["y"]=>
int(2)
}
因此array_diff
似乎工作正常。您只是期望PHP的行为方式与实际不同!