You are viewing a single thread.
View all comments View context
3 points

The answer for the deep copy would seem to be a combination of a static recursive function to copy the array while cloning the objects inside, with setting the __clone() magic function in your objects to break the references, no? Granted it’s not a built in function, but not difficult to implement.

permalink
report
parent
reply
2 points
*

Arrays are passed by copy by default. Every scalar or array value is copied by value. Every other thing (objects basically) is copied by reference.

Passing array by reference passes everything it used to copy by reference.

Attempting to clone an array will result in an error.

Reassignment of a variable containing an array will do the same as if passed to a function by value.

Reassignment of a variable containing an array using the reference operator will do the same as if passed to a function by reference.

So, in order to deep copy an array, just reassign and recursively traverse the array calling clone on each object. Of course, this would break (or not, depending on the intended use) when the same object is referenced multiple times under different keys.

permalink
report
parent
reply
2 points

Sorry for being lazy so no sources for now. But based on my research back then. Using clone (on arrays) is actually slower then json_encode/json_decode.

So there are some cool optimization tricks going on in the background. But that doesn’t make it any more intuitive for me.

permalink
report
parent
reply

Programmer Humor

!programmerhumor@lemmy.ml

Create post

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

  • Posts must be relevant to programming, programmers, or computer science.
  • No NSFW content.
  • Jokes must be in good taste. No hate speech, bigotry, etc.

Community stats

  • 5.3K

    Monthly active users

  • 1.5K

    Posts

  • 33K

    Comments