كيفية نسخ مصفوفة كاملة في PHP إلى متغير آخر بحيث لا تؤثر التغييرات على الأصل؟
مرحبًا أيها الزملاء! أنا مبتدئ في PHP وقد واجهت موقفًا غير مفهوم. لدي مصفوفة تحتوي على إعدادات المستخدم، وأريد إنشاء نسخة احتياطية منها لاستعادتها لاحقًا إذا حدث خطأ ما.
إليك مثال مبسط:
```php
$original = ['name' => 'Иван', 'age' => 30, 'hobbies' => ['чтение', 'бег']];
$backup = $original; // ظننت أن هذه نسخة
```
أقوم بتغيير النسخة، لكن التغييرات تؤثر على الأصل:
```php
$backup['name'] = 'Петр';
echo $original['name']; // يطبع 'Иван' — حسنًا، هذا يعمل
```
لكن عندما أغير المصفوفة المتداخلة:
```php
$backup['hobbies'][] = 'программирование';
print_r($original['hobbies']); // يطبع ['чтение', 'бег', 'программирование']
```
الأصل تغير أيضًا! قرأت أنه في PHP، المصفوفات تُنسخ افتراضيًا عند التعيين (copy-on-write)، لكن هذا لا يعمل مع المصفوفات المتداخلة. هل هناك دالة مدمجة تقوم بنسخ عميق (deep copy) للمصفوفة بحيث تكون جميع مستويات التداخل مستقلة؟ أم يجب