public static function dataOrder($data, $schema) { if (is_object($data) && ($properties = JsonUtils::get($schema, 'properties'))) { $result = array(); foreach ($properties as $key => $value) { if (isset($data->{$key})) { $result[$key] = static::dataOrder($data->{$key}, $properties->{$key}); unset($data->{$key}); } } $result = (object) array_merge($result, (array) $data); } elseif (is_array($data) && ($items = JsonUtils::get($schema, 'items'))) { $objSchema = is_object($schema->items) ? $schema->items : null; foreach ($data as $item) { $itemSchema = $objSchema ?: (next($schema->items) ?: null); $result[] = static::dataOrder($item, $itemSchema); } } else { $result = $data; } return $result; }