如何检查匹配的键值对

How to check for matching key value pairs

我有几组带有键值对的数组:

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 1, 'yellow' => 7, 'cyan'   => 8);

如何检查两个数组是否同时包含匹配的键和值?我想设置一个条件,如果 $array1$array2 有一对匹配 blue=>1 那么我想做点什么?

遍历 $array1 并检查 $array2 的值是否相同:

foreach($array1 as $i=>$val){
    if($array2[$i]==$val)
        //do stuff
}  

您可以使用 array_intersect_assoc:

php > var_dump(count(array_intersect_assoc($array1,$array2)) > 0);
bool(true)

php > $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
php > $array2 = array('green' => 5, 'blue' => 2, 'yellow' => 7, 'cyan'   => 8);
php > var_dump(count(array_intersect_assoc($array1,$array2)) > 0);
bool(false)
foreach( $array as $key => $value ){
  if (array_key_exists($key, $array1)) {
    echo $array[$key] == $array1[$key];
  }
}

如果我没记错的话,我想你必须检查密钥是否存在,因为 php 在尝试访问散列中不存在的密钥时出错。