为了账号安全,请及时绑定邮箱和手机立即绑定

没有内置函数的数组键比较

没有内置函数的数组键比较

PHP
墨色风雨 2022-09-17 21:01:52
我有两个键值对数组。数组如下:$array1 = ["a" => 2, "b" => 3, "c" => 1, "d" => 2];$array2 = ["c" => 1, "d" => 1, "a" => 2, "b" => 3, "x" => 4, "z" => 1];问题陈述我需要找到在有相同.示例为 3,因为 a、b 和 c 存在于中,并且分别具有相同的值 2、3 和 1。尝试的方法countkeysarray1array2valueCountkeysarray1array2foreach($array1 as $key => $value){     if($array2.$key === $array1.$key){       if($array2[$value] === $array1[$value]){          $matchCount++;       }    }}注意:我不确定是否从数组对象访问键,因此使用dot(.),不知何故我获得了计数,但计数不正确。
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

<?php


$array1 = ["a" => 2, "b" => 3, "c" => 1, "d" => 2];

$array2 = ["c" => 1, "d" => 1, "a" => 2, "b" => 3, "x" => 4, "z" => 1];


$count = 0;


foreach($array1 as $key => $value){

    $array_2_value = $array2[$key] ?? null;

    if($array_2_value !== null && $array_2_value === $value) $count++;

}


echo $count;

演示:https://3v4l.org/BREbg

您可以循环检查密钥是否存在具有相同值的键。如果是,我们将增加计数。您可以使用空合并运算符 ?? 来检查 是否存在。$array1$array2$key$array2


查看完整回答
反对 回复 2022-09-17
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

function countSameKeyAndValues(array $array1, array $array2): int 

{

    $sameKeys = array_keys(array_intersect($array1, $array2));

    $count = 0;


    foreach ($sameKeys as $key) {

        if ($array1[$key] === $array2[$key]) {

            $count++;

        }

    }


    return $count;

}


查看完整回答
反对 回复 2022-09-17
?
Qyouu

TA贡献1786条经验 获得超11个赞

您可以使用循环遍历$array 1。foreach


然后,您可以使用 for 检查 $array 2 的值。key$array1


然后,如果该键的值存在,则可以检查该键的值是否相同$array1


<?php


   $array1 = ["a" => 2, "b" => 3, "c" => 1, "d" => 2];

   $array2 = ["c" => 1, "d" => 1, "a" => 2, "b" => 3, "x" => 4, "z" => 1];


   $count = 0;


   foreach($array1 as $key => $value){

      $array2Value = $array2[$key] ?? null;

      if($array2Value !== null && $array2Value === $value) 

        $count++;

   }


echo $count;


查看完整回答
反对 回复 2022-09-17
  • 3 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信