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

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

تضم implode(', ', $array) قيم مصفوفة في نص واحد مع فاصل بينها. تعلّم implode مع المفاتيح، والمصفوفات الترابطية، وبناء قوائم HTML، والفرق بين implode وjoin.

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

تضم implode($separator, $array) قيم مصفوفة في نص واحد، مع $separator بين كل زوج: تعيد implode(', ', ['red', 'green', 'blue']) النص "red, green, blue".

لا يوضع الفاصل إلا بين العناصر، لا قبل الأول ولا بعد الأخير. وهي عكس explode()، التي تقسّم نصًا إلى مصفوفة.

الصيغة

implode(string $separator, array $array): string
implode(array $array): string   // separator defaults to ""

الفاصل أولًا. كانت الشيفرات القديمة تمرر المصفوفة أولًا أحيانًا، implode($array, ', '). أُهمل ذلك الترتيب في PHP 7.4 وحُذف في PHP 8.0، حيث يرمي TypeError: implode(): Argument #2 ($array) must be of type ?array, string given.

implode مقابل join

join() اسم بديل لـ implode(). تأخذان الوسائط نفسها وتعيدان النص نفسه، فاختر واحدة والتزم بها.

ماذا يحدث للأعداد والقيم المنطقية وnull

تُحوَّل كل قيمة إلى نص أولًا. تُطبع الأعداد كما تتوقع، وتصبح true النص "1"، وتصبح false وnull نصوصًا فارغة، فيبقى فاصلان متتاليان.

ضم مصفوفة ترابطية

تتجاهل implode() المفاتيح ولا تضم إلا القيم. للحصول على أزواج key=value، ابنِ كل جزء بـ array_map() على المفاتيح والقيم، ثم اضمم. وتفعل http_build_query() الشيء نفسه لنص استعلام في رابط وترمّز أيضًا المسافات والمحارف الخاصة.

يضم النمط نفسه المفاتيح وحدها: implode(', ', array_keys($user)). ومزيد عن المفاتيح والقيم في صفحة المصفوفات الترابطية.

الضم بسطر جديد أو بناء قائمة HTML

يمكن أن يكون الفاصل أي نص. تضع "\n" (بعلامتي تنصيص مزدوجتين) كل قيمة في سطرها، وهذا مفيد لملفات النصوص ومخرجات سطر الأوامر. ومع وسوم HTML فاصلًا، تبني implode() قائمة في سطر واحد. شغّل الكتلة التالية فيعرض تبويب Page القائمة.

تهريب كل قيمة بـ htmlspecialchars() قبل الضم يمنع قيمة مثل <b> من أن تصبح وسمًا.

الضم مع «و» قبل العنصر الأخير

تحتاج القائمة المقروءة للبشر عادة إلى «and» قبل العنصر الأخير. اسحبه، واضمم البقية، ثم أضفه:

خطأ شائع: المصفوفات المتداخلة

تعمل implode() على مستوى واحد. والعنصر الذي هو نفسه مصفوفة يتحول إلى الكلمة Array، وتطبع PHP تحذيرًا:

<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array

سطّح المصفوفات الداخلية أولًا، أو اضمم كل واحدة على حدة:

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

ماذا تفعل implode() في PHP؟

تضم قيم مصفوفة في نص واحد، وتضع الفاصل بينها: تعيد implode(', ', ['a', 'b', 'c']) النص "a, b, c". وهي عكس explode().

ما الفرق بين implode() وjoin()؟

لا فرق. join() اسم بديل لـ implode(): الوسائط نفسها والنتيجة نفسها. وimplode() هو الاسم الذي ستراه في معظم الشيفرات.

كيف أضم مصفوفة ترابطية مع مفاتيحها؟

لا تستخدم implode() إلا القيم. لتضمين المفاتيح، ابنِ الأجزاء أولًا: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). ولنص استعلام في رابط، تفعل http_build_query($a) ذلك في استدعاء واحد.

لماذا تعطي implode() الخطأ TypeError في PHP 8؟

لأن الوسائط بالترتيب القديم. أُهملت implode($array, ', ') في PHP 7.4 وحُذفت في PHP 8.0. اكتب الفاصل أولًا: implode(', ', $array).

كيف أحوّل مصفوفة إلى نص مفصول بفواصل في PHP؟

implode(',', $array). استخدم ', ' فاصلًا إذا أردت مسافة بعد كل فاصلة. ولملف CSV، استخدم fputcsv()، التي تضع أيضًا علامات تنصيص حول القيم التي تحتوي فواصل.

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

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

ابدأ الآن