Advertisement
relax4o

array_diff_recursive

Aug 18th, 2017
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.18 KB | None | 0 0
  1. <?php
  2.  
  3. $arr1 = array(
  4.         'key1' => 2,
  5.         'key2' => 4,
  6.         'key3' => array(1, 2,
  7.                         array(1,4,3,5,
  8.                               array(10, 13, 20)),
  9.                         7),
  10.         'key4' => 1,
  11. );
  12.  
  13. $arr2 = array(
  14.         'key1' => 2,
  15.         'key2' => 5,
  16.         'key3' => array(1, 2,
  17.                         array(1,34,3,5,
  18.                               array(10, 15, 20)),
  19.                         7),
  20.        
  21. );
  22.  
  23. function array_diff_recursive($a1, $a2) {
  24.     $result = array();
  25.    
  26.     foreach( $a1 as $k=>$v ) {
  27.         if (array_key_exists($k, $a2)) {
  28.             if ( is_array($v) && is_array($a2[$k]) ) {
  29.                 $result[$k] = array_diff_recursive($v, $a2[$k]);
  30.             } else {
  31.                 if ( $v !== $a2[$k] ) {
  32.                     $result[$k] = $v;
  33.                 }
  34.             }
  35.         } else {
  36.              $result[$k] = $v;  
  37.         }
  38.     }
  39.    
  40.     return $result;
  41. }
  42.  
  43. $multi_diff = array_diff_recursive($arr1, $arr2);
  44.  
  45. // Tests
  46. echo "<pre>";
  47. echo "Array 1:\n";
  48. print_r($arr1);
  49. echo "\n\nArray 2:\n";
  50. print_r($arr2);
  51. echo "\n\nMulti diff:\n";
  52. print_r($multi_diff);
  53. echo "</pre>";
  54. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement