note 115634 added to function.array-diff-assoc

From: Date: Thu, 28 Aug 2014 18:27:08 +0000
Subject: note 115634 added to function.array-diff-assoc
Groups: php.notes 
Request: Send a blank email to php-notes+get-200335@lists.php.net to get a copy of this message
to chinello at gmail dot com I've had to use your function but it showed that the use of isset can't differentiate the NULL values from not setted values. Here's a version that takes care of this subtility. <?php function array_diff_assoc_recursive($array1, $array2) { $difference = NULL; foreach($array1 as $key => $value) { if(is_array($value)) { if(!array_key_exists($key, $array2)) { $difference[$key] = $value; } elseif(!is_array($array2[$key])) { $difference[$key] = $value; } else { $new_diff = array_diff_assoc_recursive($value, $array2[$key]); if($new_diff != FALSE) { $difference[$key] = $new_diff; } } } elseif(!array_key_exists($key, $array2) || $array2[$key] != $value) { $difference[$key] = $value; } } return !isset($difference) ? 0 : $difference; } ?> Hope that helps François ---- Server IP: 72.52.91.14 Probable Submitter: 2a01:e35:2e87:32f0:6a5d:43ff:fe58:e238 ---- Manual Page -- http://php.net/manual/en/function.array-diff-assoc.php Edit -- https://master.php.net/note/edit/115634 Del: integrated -- https://master.php.net/note/delete/115634/integrated Del: useless -- https://master.php.net/note/delete/115634/useless Del: bad code -- https://master.php.net/note/delete/115634/bad+code Del: spam -- https://master.php.net/note/delete/115634/spam Del: non-english -- https://master.php.net/note/delete/115634/non-english Del: in docs -- https://master.php.net/note/delete/115634/in+docs Del: other reasons-- https://master.php.net/note/delete/115634 Reject -- https://master.php.net/note/reject/115634 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#200335) next »