Title: AbstractDataTransferObject::convertEmptyArraysToObjects
Published: May 20, 2026

---

# AbstractDataTransferObject::convertEmptyArraysToObjects( mixed $data,  $schema ): mixed

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#wp--skip-link--target)

This function’s access is marked private. This means it is not intended for use 
by plugin or theme developers, only by core. It is listed here for completeness.

Recursively converts empty arrays to stdClass objects where the schema expects objects.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#parameters)󠁿

 `$data`mixedrequired

The data to process.

mixed> $schema The JSON schema for the data.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#return)󠁿

 mixed The processed data.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#source)󠁿

    ```php
    private function convertEmptyArraysToObjects($data, array $schema)
    {
        // If data is an empty array and schema expects object, convert to stdClass
        if (is_array($data) && empty($data) && isset($schema['type']) && $schema['type'] === 'object') {
            return new stdClass();
        }
        // If data is an array with content, recursively process nested structures
        if (is_array($data)) {
            // Handle object properties
            if (isset($schema['properties']) && is_array($schema['properties'])) {
                foreach ($data as $key => $value) {
                    if (isset($schema['properties'][$key]) && is_array($schema['properties'][$key])) {
                        $data[$key] = $this->convertEmptyArraysToObjects($value, $schema['properties'][$key]);
                    }
                }
            }
            // Handle array items
            if (isset($schema['items']) && is_array($schema['items'])) {
                foreach ($data as $index => $item) {
                    $data[$index] = $this->convertEmptyArraysToObjects($item, $schema['items']);
                }
            }
            // Handle oneOf/anyOf schemas - just use the first one
            foreach (['oneOf', 'anyOf'] as $keyword) {
                if (isset($schema[$keyword]) && is_array($schema[$keyword])) {
                    foreach ($schema[$keyword] as $possibleSchema) {
                        if (is_array($possibleSchema)) {
                            return $this->convertEmptyArraysToObjects($data, $possibleSchema);
                        }
                    }
                }
            }
        }
        return $data;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/php-ai-client/src/common/abstractdatatransferobject.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/php-ai-client/src/Common/AbstractDataTransferObject.php#L93)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/php-ai-client/src/Common/AbstractDataTransferObject.php#L93-L127)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#related)󠁿

| Uses | Description | 
| [AbstractDataTransferObject::convertEmptyArraysToObjects()](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/)`wp-includes/php-ai-client/src/Common/AbstractDataTransferObject.php` |

Recursively converts empty arrays to stdClass objects where the schema expects objects.

  |

| Used by | Description | 
| [AbstractDataTransferObject::convertEmptyArraysToObjects()](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/)`wp-includes/php-ai-client/src/Common/AbstractDataTransferObject.php` |

Recursively converts empty arrays to stdClass objects where the schema expects objects.

  | 
| [AbstractDataTransferObject::jsonSerialize()](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/jsonserialize/)`wp-includes/php-ai-client/src/Common/AbstractDataTransferObject.php` |

Converts the object to a JSON-serializable format.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-common-abstractdatatransferobject/convertemptyarraystoobjects/?output_format=md#changelog)󠁿

| Version | Description | 
| [0.1.0](https://developer.wordpress.org/reference/since/0.1.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwordpress-aiclient-common-abstractdatatransferobject%2Fconvertemptyarraystoobjects%2F)
before being able to contribute a note or feedback.