تضيف array_push($arr, $value) قيمة إلى نهاية مصفوفة. ولقيمة واحدة، يؤدي الاختصار $arr[] = $value; المهمة نفسها دون استدعاء دالة، وهو ما تستخدمه معظم شيفرات PHP. كلاهما يغيّر المصفوفة في مكانها.
تأخذ array_push() المصفوفة بالمرجع، لذا تعدّل المتغير الذي تمرره. وتعيد العدد الجديد للعناصر، ويمكنك تجاهله.
array_push مقابل $arr[] =
استخدم $arr[] = $value لقيمة واحدة: فهي أقصر وتتجنب استدعاء دالة، وهذا يتراكم داخل حلقة كبيرة. واستخدم array_push() عندما تكون لديك عدة قيم تضيفها في جملة واحدة، أو قائمة من القيم تريد بسطها.
تعمل $arr[] = أيضًا على متغير غير موجود بعد: تنشئ PHP المصفوفة. أما array_push() فتحتاج إلى مصفوفة موجودة: على متغير غير معرّف ترمي TypeError: array_push(): Argument #1 ($array) must be of type array, null given.
إضافة مفتاح وقيمة
لا تلحق array_push() القيم إلا بالمفتاح الصحيح التالي. لإضافة مفتاح مسمى، أسند إليه. ولإضافة عدة أزواج معًا، استخدم += (تُبقي المفاتيح الموجودة) أو array_merge() (تجعل القيم الجديدة تفوز).
الفرق بين + وarray_merge() عند تصادم المفاتيح مشروح في صفحة array_merge.
الإضافة إلى البداية: array_unshift
تُدرج array_unshift($arr, $value) في البداية. يُعاد ترقيم المفاتيح الصحيحة لتحصل القيمة الجديدة على الفهرس 0؛ وتبقى المفاتيح النصية كما هي. ومثل array_push()، تقبل عدة قيم وتعيد العدد الجديد.
لوضع زوج مسمى أولًا، ابنِ مصفوفة جديدة: $menu = ['login' => '/login'] + $menu;.
الإدراج في موضع محدد
تُدرج array_splice($arr, $offset, 0, $values) دون حذف أي شيء: تبدأ عند $offset، وتحذف 0 من العناصر، وتضع القيم الجديدة هناك. ويُعاد ترقيم المفاتيح الصحيحة بعد نقطة الإدراج.
تستطيع array_splice() أيضًا حذف العناصر واستبدالها؛ وتعرض صفحة حذف العناصر هذه الصيغ.
إلحاق مصفوفة أخرى
تضيف array_push($a, $b) المصفوفة $b عنصرًا متداخلًا واحدًا، ونادرًا ما يكون هذا ما تريده. لإضافة قيم $b واحدة واحدة، ابسطها، أو ابنِ مصفوفة جديدة بصيغة البسط أو بـ array_merge().
خطأ شائع: إسناد القيمة المعادة
تعيد array_push() عددًا، هو العدد الجديد للعناصر. وإسناده مرة أخرى إلى متغير المصفوفة يستبدل مصفوفتك بعدد صحيح، فترمي array_push() التالية عليه TypeError.
ينطبق الأمر نفسه على array_unshift() وعلى sort()، التي تعيد true. الدوال التي تغيّر مصفوفة في مكانها تعيد حالة، لا المصفوفة.
الأسئلة الشائعة
ما الفرق بين array_push و$arr[] في PHP؟
كلاهما يلحق بالنهاية. تضيف $arr[] = $x; قيمة واحدة دون استدعاء دالة، لذا فهي الخيار المعتاد وأسرع قليلًا. أما array_push($arr, $a, $b, $c) فمفيدة عندما تضيف عدة قيم معًا، وتعيد العدد الجديد للعناصر.
كيف أضيف مفتاحًا وقيمة إلى مصفوفة في PHP؟
أسند إلى المفتاح: $arr['color'] = 'blue';. لا تستطيع array_push() ذلك لأنها تستخدم دائمًا المفتاح الصحيح التالي. ولإضافة عدة أزواج معًا، استخدم $arr += ['a' => 1, 'b' => 2]; أو array_merge().
كيف أضيف عنصرًا إلى بداية مصفوفة في PHP؟
استخدم array_unshift($arr, $value). تعيد ترقيم المفاتيح الصحيحة لتحصل القيمة الجديدة على الفهرس 0؛ وتبقى المفاتيح النصية كما هي.
لماذا تصبح مصفوفتي عددًا بعد array_push؟
لأن array_push() تعيد العدد الجديد للعناصر، لا المصفوفة. كتابة $arr = array_push($arr, 'x'); تستبدل المصفوفة بذلك العدد. استدعها في سطر مستقل: array_push($arr, 'x');.