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

المصفوفات في PHP: الإنشاء والوصول والمرور والطباعة

المصفوفة في PHP قائمة مرتبة من القيم، كل قيمة مخزّنة تحت مفتاح: $fruits = ['apple', 'banana']; وتُقرأ بـ $fruits[0]. تعلّم كيف تنشئ المصفوفات، وتقرأ العناصر وتغيّرها، وتمر عليها، وتطبعها، وأي دالة مصفوفات تختار.

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

تخزّن المصفوفة في PHP قائمة من القيم تحت مفاتيح. أنشئ واحدة بالأقواس المربعة، $fruits = ['apple', 'banana', 'cherry'];، واقرأ عنصرًا بفهرسه، $fruits[0]. تبدأ الفهارس من 0، وتعطي count($fruits) عدد العناصر.

كل مصفوفة في PHP خريطة مرتبة: كل قيمة تقع تحت مفتاح. عندما لا تختار المفاتيح، ترقّمها PHP 0, 1, 2... فتحصل على مصفوفة مفهرسة. وعندما تختارها بنفسك (['name' => 'Ada'])، تحصل على مصفوفة ترابطية. وكلتاهما من النوع array نفسه.

إنشاء مصفوفة

الأقواس المربعة هي الصيغة المعتادة. وarray() هي الكتابة الأقدم وتنتج الشيء نفسه تمامًا. تبني range() قائمة من الأعداد أو الحروف، وتكرر array_fill() قيمة واحدة.

يمكن لمصفوفة PHP أن تحمل قيمًا من أنواع مختلفة معًا، بما فيها مصفوفات أخرى. والمصفوفة المكوّنة من مصفوفات هي مصفوفة متعددة الأبعاد، وهي الطريقة المعتادة لحمل صفوف من البيانات.

الحصول على العنصر الأول والأخير

ليس في PHP فهارس سالبة. لا تعني $arr[-1] «الأخير»: بل تبحث عن مفتاح اسمه -1، وعندما لا يوجد تطبع PHP Warning: Undefined array key -1. استخدم array_key_first() وarray_key_last()، وهما تعملان أيضًا عندما لا تبدأ المفاتيح من 0.

تعيد end($queue) أيضًا القيمة الأخيرة، لكنها تحرّك المؤشر الداخلي للمصفوفة أثرًا جانبيًا، لذا فالأسلوب المعتمد على المفاتيح هو الخيار الأوضح.

طباعة مصفوفة

لا تعمل echo $arr: فهي تطبع الكلمة Array وتحذيرًا. اختر المخرجات المناسبة للمهمة:

  • print_r($arr) لعرض مقروء أثناء تصحيح الأخطاء.
  • var_dump($arr) لترى أيضًا نوع كل قيمة وطولها.
  • implode(', ', $arr) لتحويل القيم إلى نص واحد للعرض.
  • json_encode($arr) لإرسال المصفوفة إلى JavaScript أو إلى واجهة برمجية.

تشرح صفحة print_r وvar_dump خيارات التنسيق، بما فيها طباعة مصفوفة داخل HTML.

المرور على مصفوفة

foreach هي الحلقة المصنوعة للمصفوفات: تعطيك كل قيمة، والمفتاح أيضًا إن طلبته. وتعمل حلقة for مع فهرس أيضًا للمصفوفات المفهرسة التي تبدأ مفاتيحها من 0 دون فجوات.

المصفوفات تُنسخ ولا تُشارك

إسناد مصفوفة إلى متغير آخر، أو تمريرها إلى دالة، يعطي نسخة. تغيير النسخة يترك الأصل كما هو. أضف & إلى المعامل عندما يجب أن تغيّر الدالة مصفوفة المستدعي.

دوال المصفوفات حسب المهمة

تأتي PHP بأكثر من 70 دالة للمصفوفات. هذه هي الأكثر استخدامًا، ولكل منها صفحتها:

المهمةالدالة
الإضافة إلى النهايةarray_push() أو $arr[] =
عدد العناصرcount()
التحقق من وجود قيمةin_array()
إيجاد مفتاح قيمةarray_search()
التحقق من وجود مفتاحarray_key_exists()
دمج المصفوفاتarray_merge()
تحويل كل قيمةarray_map()
الإبقاء على بعض القيمarray_filter()
الترتيبsort() وusort() وأخواتهما
حذف عنصرunset() وarray_splice()
أخذ جزءarray_slice()
حذف التكراراتarray_unique()
من نص إلى مصفوفة والعكسexplode() وimplode()

مفاتيح تندمج بصمت

مفاتيح المصفوفة إما أعداد صحيحة أو نصوص، وتحوّل PHP بعض المفاتيح نيابة عنك. النص الذي يشبه عددًا عشريًا صحيحًا، مثل "1"، يصبح العدد الصحيح 1، فتكون $a["1"] و$a[1] الخانة نفسها. أما "01" و"1.5" فتبقيان نصين. لهذا قد تنتهي مصفوفة مبنية من مُدخلات نموذج أو من ملف CSV بعدد عناصر أقل مما توقعت.

الأسئلة الشائعة

كيف أنشئ مصفوفة في PHP؟

استخدم الأقواس المربعة: $colors = ['red', 'green', 'blue'];. والمصفوفة الفارغة هي $items = [];. والصيغة الأقدم array('red', 'green') تفعل الشيء نفسه وما زالت تعمل.

كيف أطبع مصفوفة في PHP؟

لا تستطيع echo طباعة مصفوفة (تطبع الكلمة Array وتحذيرًا). استخدم print_r($arr) لعرض مقروء، أو var_dump($arr) لترى الأنواع أيضًا، أو echo implode(', ', $arr) لطباعة القيم في سطر واحد.

كيف أحصل على آخر عنصر في مصفوفة في PHP؟

استخدم $arr[array_key_last($arr)] (PHP 7.3 وما بعدها) أو end($arr). ليس في PHP فهارس سالبة: تبحث $arr[-1] عن مفتاح اسمه -1، وهو غير موجود عادة.

هل تُمرَّر المصفوفات في PHP بالقيمة أم بالمرجع؟

بالقيمة. تعطي $b = $a; المتغير $b نسخته الخاصة، فتغيير $b لا يغيّر $a. ولتعديل مصفوفة المستدعي داخل دالة، عرّف المعامل مرجعًا: function add(array &$list).

ما الفرق بين المصفوفة المفهرسة والمصفوفة الترابطية في PHP؟

هما النوع نفسه. للمصفوفة المفهرسة مفاتيح صحيحة 0, 1, 2... تعيّنها PHP لك؛ وتستخدم المصفوفة الترابطية مفاتيح تختارها أنت، عادة نصوصًا مثل 'name'. ويمكن لمصفوفة واحدة أن تجمع بينهما.

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

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

ابدأ الآن