Menu
flag Ar iconالعربيةdown icon

الدالة array_push() في PHP: إضافة عناصر إلى مصفوفة

تضيف array_push($arr, $value) قيمة أو أكثر إلى نهاية مصفوفة؛ وتفعل $arr[] = $value الشيء نفسه لقيمة واحدة وهي أسرع. تعلّم كيف تضيف إلى نهاية مصفوفة أو بدايتها أو وسطها، وتضيف مفتاحًا وقيمة، وتتجنب خطأ القيمة المعادة الشهير.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

تضيف 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');.

رسم توضيحي للغات البرمجة في Coddy

تعلّم البرمجة مع Coddy

ابدأ الآن