Avatar ·

كيف يعمل foreach فعليًا في PHP؟ فهم النسخ والمراجع

مرحبًا بالجميع! بدأت في تعلم PHP وواجهت سلوكًا غريبًا جدًا للحلقة `foreach`. كتبت كودًا بسيطًا، لكن النتائج أربكتني. ```php 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) // كنت أتوقع أن تتضاعف جميع القيم! ``` اعتقدت أن `$value` هي reference لعنصر المصفوفة، لكن اتضح أنها نسخة. حسنًا، ثم جربت استخدام `&`: ```php 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ) — يعمل! ``` لكن بعد ذلك قرأت أن القيام بذلك خطير، لأن `$value` تظل reference للعنصر الأخير بعد الحلقة. وأيضًا سمعت عن شيء مثل "مؤشرات المصفوفة الداخلية" وأن `foreach` لا يعمل بالبساطة التي تبدو عليها. هل يمكن لأحد أن يشرح كيف يعالج `foreach` ال