شرح حساب طول المصفوفة في PHP: كيفية معرفة عدد عناصر Array
مقدمة سريعة إلى المصفوفات في PHP
تُعد المصفوفات في PHP من أكثر أنواع البيانات استخداماً، لأنها تتيح لك تخزين عدة قيم داخل متغير واحد بطريقة منظمة وسهلة المعالجة. ومع ازدياد حجم البيانات داخل التطبيق، تصبح معرفة عدد عناصر المصفوفة مهارة أساسية تساعدك على كتابة كود أوضح وأكثر كفاءة.
في هذا الدليل، سنشرح معنى المصفوفة في PHP، وكيفية التعامل معها، ثم ننتقل إلى الطريقة الصحيحة لمعرفة حجمها أو عدد عناصرها باستخدام الدوال المناسبة.

ما هي المصفوفة في PHP؟
المصفوفة Array هي نوع بيانات يسمح بتخزين أكثر من قيمة داخل متغير واحد. بدلاً من إنشاء متغير مستقل لكل جزء من البيانات، يمكنك جمعها جميعاً داخل بنية واحدة يسهل الوصول إليها وتمريرها بين الدوال.
على سبيل المثال، إذا أردت تخزين عنوان فقط، يمكنك استخدام متغير نصي عادي:
$heading = 'PHP Array Length Tutorial';
لكن إذا كنت تحتاج إلى تخزين العنوان والعنوان الفرعي واسم الكاتب، فإمكانك استخدام عدة متغيرات:
$heading = 'PHP Array Length Tutorial';
$subheading = 'How to get an array size';
$author = 'Jonathan Bossenger';
هذه الطريقة مناسبة في الحالات البسيطة، لكنها تصبح أقل مرونة كلما زاد عدد القيم. هنا تظهر فائدة المصفوفات، إذ يمكنك جمع هذه البيانات في متغير واحد:
$post_data = array(
'PHP Array Length Tutorial',
'How to get an array size',
'Jonathan Bossenger'
);
يمكن الوصول إلى كل عنصر من خلال المفتاح الرقمي الخاص به، مثل:
echo $post_data[0];
المصفوفات الترابطية في PHP
في كثير من الحالات، يكون استخدام المفاتيح النصية أوضح من المفاتيح الرقمية، خاصة عندما تكون البيانات ذات معنى واضح.
$post_data = array(
'heading' => 'PHP Array Length Tutorial',
'subheading' => 'How to get an array size',
'author' => 'Jonathan Bossenger'
);
بهذا الشكل يمكنك الوصول إلى القيمة باستخدام مفتاح نصي مفهوم:
echo $post_data['heading'];
الصيغة المختصرة لكتابة المصفوفات
توفر PHP أيضاً صيغة مختصرة وأكثر شيوعاً لكتابة المصفوفات باستخدام الأقواس المربعة:
$post_data = [
'heading' => 'PHP Array Length Tutorial',
'subheading' => 'How to get an array size',
'author' => 'Jonathan Bossenger'
];
هذه الصيغة أنظف بصرياً، ويعتمدها كثير من المطورين في المشاريع الحديثة.
المصفوفات المتداخلة ولماذا قد تحتاج إليها
يمكن أن تحتوي المصفوفة على مصفوفات أخرى بداخلها، ويُعرف ذلك باسم المصفوفات المتداخلة Nested Arrays. هذا الأسلوب مفيد عندما تريد تنظيم بيانات مرتبطة ضمن مستويات متعددة.
$post_data = [
'heading' => 'PHP Array Length Tutorial',
'subheading' => 'How to get an array size',
'author' => [
'name' => 'Jonathan Bossenger',
'twitter' => 'jon_bossenger',
]
];
وللوصول إلى قيمة داخل مصفوفة متداخلة، يمكنك استخدام المفاتيح بشكل متسلسل:
echo $post_data['author']['name'];
ورغم أن هذا الأسلوب عملي جداً، فإن كثرة التداخل قد تكون إشارة إلى أن استخدام الكائنات Objects قد يكون أكثر ملاءمة في بعض التطبيقات المعقدة.
لماذا يُنصح باستخدام المصفوفات؟
المصفوفات مناسبة جداً عندما تحتاج إلى جمع بيانات مترابطة وتمريرها إلى دالة واحدة بدلاً من التعامل مع عدد كبير من المتغيرات المنفصلة. هذا يجعل الكود أكثر ترتيباً وأسهل في القراءة والصيانة.
$post_data = [
'heading' => 'PHP Array Length Tutorial',
'subheading' => 'How to get an array size',
'author' => [
'name' => 'Jonathan Bossenger',
'twitter' => 'jon_bossenger',
]
];
$filtered_post_data = filter_post_data($post_data);
بدلاً من تمرير عدة متغيرات منفصلة إلى الدالة filter_post_data()، يصبح تمرير مصفوفة واحدة أكثر بساطة ووضوحاً.
كيفية حساب عدد عناصر المصفوفة في PHP
عندما نتحدث عن حجم المصفوفة، فإن المقصود غالباً هو عدد العناصر الموجودة داخلها، وليس حجمها في الذاكرة. والطريقة الأشهر لتنفيذ ذلك في PHP هي استخدام الدالة count().
استخدام الدالة count() مع المصفوفات العادية
تعيد الدالة count() عدد العناصر الموجودة داخل المصفوفة. إذا كانت المصفوفة بسيطة وغير متداخلة، فالاستخدام مباشر جداً:
$post_data = array(
'heading' => 'PHP Array Length Tutorial',
'subheading' => 'How to get an array size',
'author' => 'Jonathan Bossenger'
);
echo count($post_data);
الناتج هنا سيكون 3، لأن المصفوفة تحتوي على ثلاثة عناصر رئيسية: heading وsubheading وauthor.
كيف تتصرف count() مع المصفوفات المتداخلة؟
إذا كانت المصفوفة تحتوي على مصفوفة أخرى بداخلها، فقد تتوقع أن تقوم count() بحساب جميع العناصر الداخلية تلقائياً، لكن هذا لا يحدث افتراضياً.
$post_data = [
'heading' => 'PHP Array Length Tutorial',
'subheading' => 'How to get an array size',
'author' => [
'name' => 'Jonathan Bossenger',
'twitter' => 'jon_bossenger',
]
];
echo count($post_data);
رغم وجود عناصر داخل author، فإن الناتج سيظل 3 فقط، لأن الدالة count() تحسب افتراضياً عناصر المستوى الأعلى من المصفوفة فقط.
الفرق بين COUNT_NORMAL وCOUNT_RECURSIVE
تقبل الدالة count() وسيطاً ثانياً يسمى mode. هذا الوسيط يحدد طريقة العد:
COUNT_NORMAL: يحسب عناصر المستوى الأول فقط، وهو السلوك الافتراضي.COUNT_RECURSIVE: يحسب جميع العناصر داخل المصفوفة، بما في ذلك العناصر الموجودة في المصفوفات المتداخلة.
إذا أردت حساب جميع العناصر عبر كل مستويات التداخل، فاستخدم COUNT_RECURSIVE كما يلي:
$post_data = [
'heading' => 'PHP Array Length Tutorial',
'subheading' => 'How to get an array size',
'author' => [
'name' => 'Jonathan Bossenger',
'twitter' => 'jon_bossenger',
]
];
echo count($post_data, COUNT_RECURSIVE);
في هذه الحالة سيكون الناتج 5، لأن العد شمل العناصر الثلاثة في المستوى الأعلى، بالإضافة إلى العنصرين داخل المصفوفة author.
هل يمكن استخدام sizeof() بدلاً من count()؟
نعم، يمكنك استخدام الدالة sizeof()، لكنها في الحقيقة مجرد اسم بديل alias للدالة count(). أي أن النتيجة ستكون نفسها تماماً.
لكن من الناحية العملية، يُفضّل غالباً الاعتماد على count() لأنها أكثر وضوحاً في التعبير عن الغرض الحقيقي، وهو عدّ العناصر. أما الاسم sizeof() فقد يسبب التباساً لدى بعض المطورين، إذ قد يظنون أنه يعيد حجم الذاكرة المستهلكة، لا عدد العناصر.
أفضل ممارسات عند حساب حجم المصفوفة في PHP
- استخدم
count()عندما تحتاج إلى معرفة عدد العناصر بشكل واضح ومباشر. - إذا كانت لديك مصفوفة متداخلة، فحدد ما إذا كنت تريد عدّ المستوى الأول فقط أو جميع المستويات.
- اعتمد
COUNT_RECURSIVEفقط عند الحاجة الفعلية، لأن العد التكراري قد يعطي نتائج أكبر من المتوقع في البنى المعقدة. - اجعل بنية المصفوفة واضحة لتسهيل فهم نتيجة العد لاحقاً.
- إذا أصبحت البيانات شديدة التعقيد والتداخل، ففكر في استخدام
Objectsبدلاً من المصفوفات.
ملخص سريع
- المصفوفة في
PHPتسمح بتخزين عدة قيم داخل متغير واحد. - يمكن أن تكون المصفوفة رقمية أو ترابطية أو متداخلة.
- الدالة
count()هي الطريقة الأساسية لحساب عدد عناصر المصفوفة. - السلوك الافتراضي لـ
count()هو حساب عناصر المستوى الأعلى فقط. - باستخدام
COUNT_RECURSIVEيمكنك حساب جميع العناصر داخل المصفوفات المتداخلة. - الدالة
sizeof()تعطي النتيجة نفسها، لكنها أقل وضوحاً منcount().
الخلاصة التقنية
إذا كنت تبحث عن الطريقة الأدق والأوضح لمعرفة عدد عناصر المصفوفة في PHP، فإن الدالة count() هي الخيار الأفضل في معظم الحالات. السر ليس فقط في معرفة الدالة المناسبة، بل في فهم بنية المصفوفة نفسها: هل هي بسيطة أم متداخلة؟ هذا الفهم هو ما يضمن لك نتائج صحيحة وكوداً أكثر احترافية وسهولة في الصيانة.