In PHP 8 and later, deep copying of arrays can be achieved using the spread operator or the `array_map` function. This allows developers to create a new copy of an array, including all nested arrays, ensuring that modifications to the new array do not affect the original.
<?php
// Original array
$original = [
'name' => 'John',
'details' => [
'age' => 30,
'city' => 'New York'
]
];
// Deep copy using spread operator
$deepCopy1 = [
...$original,
'details' => [
...$original['details']
]
];
// Deep copy using array_map
$deepCopy2 = array_map(function($item) {
return is_array($item) ? array_map(fn($subItem) => $subItem, $item) : $item;
}, $original);
// Modifying the deep copied array
$deepCopy1['details']['city'] = 'Los Angeles';
$deepCopy2['details']['age'] = 31;
// Output for demonstration
var_dump($original);
var_dump($deepCopy1);
var_dump($deepCopy2);
?>
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?