@@ -649,6 +649,21 @@ private function internalDataListUpdateData($data, $actions): array
649649 return false ;
650650 };
651651
652+ $ sortAndSerializeArray = function ($ data ) {
653+ $ walkData = function ($ data ) use (&$ walkData ) {
654+ $ result = [];
655+ foreach ($ data as $ key => $ value ) {
656+ if (is_array ($ value )) {
657+ $ value = $ walkData ($ value );
658+ }
659+ $ result [$ key ] = $ value ;
660+ }
661+ ksort ($ result );
662+ return $ result ;
663+ };
664+ return serialize ($ walkData ($ data ));
665+ };
666+
652667 $ pendingNotStartWithFilters = [];
653668 $ processPendingNotStartWithFilters = function () use (&$ data , &$ pendingNotStartWithFilters , &$ buildPrefixesIndex , &$ existsInPrefixesIndex ) {
654669 if (!empty ($ pendingNotStartWithFilters )) {
@@ -721,9 +736,17 @@ private function internalDataListUpdateData($data, $actions): array
721736 if (!$ add ) {
722737 $ value = $ object ->$ propertyName ;
723738 if ($ operator === 'equal ' ) {
724- $ add = $ value === $ targetValue ;
739+ if (is_array ($ value ) && is_array ($ targetValue )) {
740+ $ add = $ sortAndSerializeArray ($ value ) === $ sortAndSerializeArray ($ targetValue );
741+ } else {
742+ $ add = $ value === $ targetValue ;
743+ }
725744 } elseif ($ operator === 'notEqual ' ) {
726- $ add = $ value !== $ targetValue ;
745+ if (is_array ($ value ) && is_array ($ targetValue )) {
746+ $ add = $ sortAndSerializeArray ($ value ) !== $ sortAndSerializeArray ($ targetValue );
747+ } else {
748+ $ add = $ value !== $ targetValue ;
749+ }
727750 } elseif ($ operator === 'regExp ' ) {
728751 $ add = preg_match ('/ ' . $ targetValue . '/ ' , $ value ) === 1 ;
729752 } elseif ($ operator === 'notRegExp ' ) {
0 commit comments