Como copiar completamente um array em PHP para outra variável, para que as alterações não afetem o original?
Olá, colegas! Sou novo em PHP e me deparei com uma situação confusa. Tenho um array com configurações de usuário e quero criar um backup dele para restaurar depois, se algo der errado.
Aqui está um exemplo simplificado:
```php
$original = ['name' => 'Иван', 'age' => 30, 'hobbies' => ['чтение', 'бег']];
$backup = $original; // Pensei que isso fosse uma cópia
```
Eu mudo a cópia, mas as alterações afetam o original:
```php
$backup['name'] = 'Петр';
echo $original['name']; // Exibe 'Иван' — ok, isso funciona
```
Mas quando mudo o array aninhado:
```php
$backup['hobbies'][] = 'программирование';
print_r($original['hobbies']); // Exibe ['чтение', 'бег', 'программирование']
```
O original também mudou! Li que em PHP os arrays são copiados por padrão na atribuição (copy-on-write), mas isso não funciona para arrays aninhados. Existe uma função embutida que faça uma deep copy do array, para que todos os níveis de aninhamento sejam independentes? Ou é necessário
No answers yet.
Faça login para deixar uma resposta
Blogs