phparrayscompareassociative-arrayarray-difference

Compare key-value pairs between two flat associative arrays


I have these two associative arrays

The needle array

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

The haystack array

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

I want to check if the $a has a match with the b with its exact key and value

and if each key and value from $a has an exact match in $b.... I want to increment the value of a variable $c by 1 and so on...

as we've seen from above there 3 possible match... and supposedly results to increment the value of $c by 3

$c = "3";


Solution

  • EDIT2

    OP actually used array_intersect_assoc() for their specific usecase. (check comment)

    The original answer was not really useful for their case!


    you can look into the php's array_diff_assoc() function or the array_intersect() function.

    EDIT

    Here's a sample on counting the matched values:

    <?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 link.