إزالة العناصر الفارغة من مصفوفة PHP: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا تُعد العناصر الفارغة في المصفوفة مشكلة حقيقية

\n\n

يواجه كل مطور PHP عاجلاً أم آجلاً موقفًا تكون فيه المصفوفة، التي من المفترض أن تحتوي على بيانات مفيدة فقط، مليئة بـ"القمامة": سلاسل نصية فارغة، قيم null، false أو أصفار. يحدث هذا بشكل خاص عند معالجة البيانات من النماذج، ملفات CSV، استجابات API، أو عند التعامل مع إدخال المستخدم.

\n\n

تخيل: لقد حصلت على مصفوفة من العلامات (tags) من مستخدم، ونصفها عبارة عن سلاسل فارغة. أو أنك استوردت بيانات من Excel، وفي بعض الخلايا لم يكن هناك سوى مسافة. إذا لم تقم بتنظيف هذه المصفوفة، فقد تكون النتائج كارثية: استعلامات غير صحيحة لقاعدة البيانات، منطق ترشيح معطل، سجلات زائدة في التقارير.

\n\n

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

\n\n

1. الطريقة الأساسية: array_filter() — أداتك الرئيسية

\n\n

الطريقة الأكثر شيوعًا وإيجازًا لإزالة العناصر الفارغة من مصفوفة PHP هي الدالة array_filter(). بشكل افتراضي، تقوم بإزالة جميع العناصر التي تُعتبر "خاطئة" (false) في السياق المنطقي:

\n\n
    \n
  • "" (سلسلة فارغة)
  • \n
  • null
  • \n
  • false
  • \n
  • 0 و "0"
  • \n
  • [] (مصفوفة فارغة)
  • \n
\n\n
<?php\n$data = ['تفاحة', '', 'موزة', null, 'كرز', false, 0];\n$clean = array_filter($data);\nprint_r($clean);\n// النتيجة: Array ( [0] => تفاحة [2] => موزة [4] => كرز )\n?>
\n\n

لاحظ: يتم الاحتفاظ بمفاتيح المصفوفة. قد يكون هذا مشكلة إذا كنت بحاجة إلى ترقيم تسلسلي. الحل هو لف النتيجة في array_values():

\n\n
<?php\n$clean = array_values(array_filter($data));\nprint_r($clean);\n// النتيجة: Array ( [0] => تفاحة [1] => موزة [2] => كرز )\n?>
\n\n

1.1. ضبط دقيق: كيفية إزالة السلاسل الفارغة فقط مع الاحتفاظ بالأصفار

\n\n

ماذا لو كنت بحاجة لإزالة السلاسل الفارغة من مصفوفة PHP، ولكن الاحتفاظ بالأرقام، بما في ذلك الصفر؟ الدالة array_filter() بدون معاملات ستزيل الأصفار أيضًا. نستخدم دالة رد اتصال (callback):

\n\n
<?php\n$data = ['تفاحة', '', 'موزة', 0, 'كرز', '   '];\n$clean = array_filter($data, function($value) {\n    return $value !== '' && $value !== null;\n});\nprint_r($clean);\n// النتيجة: Array ( [0] => تفاحة [2] => موزة [3] => 0 [4] => كرز [5] =>    )\n?>
\n\n

لكن المسافات بقيت! لإزالتها أيضًا، استخدم trim():

\n\n
<?php\n$clean = array_filter($data, function($value) {\n    return trim($value) !== '' && $value !== null;\n});\nprint_r($clean);\n// النتيجة: Array ( [0] => تفاحة [2] => موزة [3] => 0 [4] => كرز )\n?>
\n\n

2. طرق متقدمة: array_diff() و array_unique()

\n\n

في بعض الأحيان تحتاج لإزالة السلاسل الفارغة من مصفوفة PHP أو قيم محددة، دون اللجوء إلى دالة رد اتصال. هنا تأتي الدالة array_diff() — دالة مقارنة المصفوفات:

\n\n
<?php\n$data = ['تفاحة', '', 'موزة', null, 'كرز', false];\n// إنشاء مصفوفة "قيم الإيقاف"\n$remove = ['', null, false];\n$clean = array_diff($data, $remove);\nprint_r($clean);\n// النتيجة: Array ( [0] => تفاحة [2] => موزة [4] => كرز )\n?>
\n\n

ميزة هذه الطريقة هي الوضوح. أنت تحدد بوضوح القيم التي تعتبرها "فارغة". لكن لا تنس: array_diff() لا تزيل العناصر بناءً على المفاتيح، بل تقارن القيم.

\n\n

2.1. إزالة التكرارات من القيم الفارغة

\n\n

إذا كانت المصفوفة تحتوي على عدة قيم فارغة متطابقة

المدونات

توصيات الكتب