PHP比较两个关联数组

13

我有这两个 关联数组

// 需要查找的数组

$a = array(
"who" => "you", 
"what" => "thing", 
"where" => "place",
"when" => "hour"
);

// 需要搜索的数组 haystack

$b = array(
"when" => "time", 
"where" => "place", 
"who" => "you",
"what" => "thing"
);

我想检查$a是否与b的确切keyvalue匹配。

如果$a中的每个键和值在$b中都有精确匹配...我想通过将一个变量$c的值增加1来执行操作,以此类推...

从上面我们可以看到有3种可能的匹配...假设结果是将$c的值增加3

$c = "3";

希望有一些天才能帮助我...


在我的情况下,数组是多维的,我通过比较每个序列化返回值来解决了这个问题。 - pmiguelpinto
1个回答

20

编辑2

实际上,OP为其特定用例使用了array_intersect_assoc() (请查看评论)

原来的答案对他们的情况并不是很有用!


您可以查看php的array_diff_assoc()函数或array_intersect()函数。

编辑

这里有一个示例,可以统计匹配值:

<?php
  $a = array(
    "who" => "you", 
    "what" => "thing", 
    "where" => "place",
    "when" => "hour"
  );
  // the haystack array
  $b = array(
    "when" => "time", 
    "where" => "place", 
    "who" => "you",
    "what" => "thing"
  );
  $c = count(array_intersect($a, $b));
  echo $c;
?>

CODEPAD链接。


1
先生,那不是我要找的答案... 我最想要的是...每当有一个完全匹配的结果时,$c 就会递增。 - Julian Paolo Dayag
1
也许我可以使用array_intersect_assoc()代替...然后只需计算匹配结果... - Julian Paolo Dayag
我已经找到了答案,先生... $check_result = count(array_intersect_assoc($a, $b)); - Julian Paolo Dayag
但还是谢谢你,因为你给了我使用rray_intersect_assoc()的想法... - Julian Paolo Dayag
1
@mickmackusa 你是对的。我已经以上更新了有关信息。 - hjpotter92

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接