replace_properties

Modified on Thu, 9 Jul at 10:50 AM

replace_properties

TABLE OF CONTENTS

Merge objects, preserve null

Definition

object replace_properties(object $object, object $properties, boolean $insertOnMissing)

Merges $object and $properties. Similar to merge, but with following differences:

  • can only merge two objects,
  • replaces array properties instead of concatenating them,
  • is able to replace values with null,
  • replaces the values of type object immediately rather than calling performing replace_properties on them again.

Parameters

object $object

First object to merge.

object $properties

Second object to merge.

boolean $insertOnMissing

If true, adds properties from $properties that are not present in $object. If not, only replaces the ones that are already present in $object, and doesn't add any new ones.

Returns

object

Object obtained by merging $properties into $object. All the properties, even the properties with null, object and array values will be overwritten in $object, in contrast to merge.

Examples

Sample data
{
  "John1": {
    "middleName": "Jim",
    "lastName": "Smith",
    "age": 42,
    "address": {
      "street": "Main Street",
      "houseNumber": 1,
      "cohabitants": ["Jane", "Julia"]
    },
    "siblings": ["Jade", "Jack"]
  },
  "John2": {
    "middleName": null,
    "lastName": "Doe",
    "address": {
      "street": "High Street",
      "apartmentNumber": 2,
      "cohabitants": ["Jane", "James"]
    },
    "siblings": ["Jerry"]
  }
}
Transformation
{
  john: replace_properties(John1, John2, `true`)
}
Result
{
  "john": {
    "middleName": null,
    "lastName": "Doe",
    "age": 42,
    "address": {
      "street": "High Street",
      "apartmentNumber": 2,
      "cohabitants": ["Jane", "James"]
    },
    "siblings": ["Jerry"]
  }
}

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article