From f1ad652b3de914c9828050daf8e559e6799b3edc Mon Sep 17 00:00:00 2001 From: Joseph Montanez Date: Wed, 28 Nov 2018 05:56:06 -0800 Subject: [PATCH 1/2] Fixed Array Diff Fix array diff issue, as positioning is not preserved. --- src/JsonPatch.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/JsonPatch.php b/src/JsonPatch.php index f77192c..0d423d1 100644 --- a/src/JsonPatch.php +++ b/src/JsonPatch.php @@ -355,7 +355,8 @@ private static function diff_array($path, $src, $dst) } $i--; } - return $result; + + return array_reverse($result); } From 4751f7e208a3fe73b1528b5754685ffbda99252a Mon Sep 17 00:00:00 2001 From: Joseph Montanez Date: Fri, 30 Nov 2018 00:52:36 -0800 Subject: [PATCH 2/2] Only push ADD ops to front of result. --- src/JsonPatch.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/JsonPatch.php b/src/JsonPatch.php index 0d423d1..2fb3ef9 100644 --- a/src/JsonPatch.php +++ b/src/JsonPatch.php @@ -346,8 +346,13 @@ private static function diff_array($path, $src, $dst) } else if ($i < $ldst && array_key_exists($i, $dst)) { - $result[] = array("op" => "add", "path" => "$path/$i", - "value" => $dst[$i]); + //-- Add operations need to moved to the front? + $operation = array( + "op" => "add", + "path" => "$path/$i", + "value" => $dst[$i] + ); + array_unshift($result, $operation); } else if ($i < $lsrc && !array_key_exists($i, $dst)) { @@ -356,7 +361,7 @@ private static function diff_array($path, $src, $dst) $i--; } - return array_reverse($result); + return $result; }