تحدي: تصفية العناصر الفريدة
جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 68 من 68.
التحدي
سهلستتلقى مدخلاً واحداً: سلسلة نصية من العناصر المفصولة بفاصلة قد تحتوي على تكرارات.
سيكون المدخل عبارة عن سلسلة نصية بهذا التنسيق: apple,banana,apple,orange,banana,grape,apple
اقرأ سلسلة المدخلات وقم بتقسيمها إلى مصفوفة من العناصر. استخدم array_filter() مع دالة استدعاء (callback function) مخصصة لإزالة العناصر المكررة، مع الاحتفاظ فقط بأول ظهور لكل عنصر فريد.
لتحقيق ذلك، قم بإنشاء دالة استدعاء تتتبع العناصر التي تمت رؤيتها بالفعل. يجب أن تعيد الدالة true للعناصر التي تمت مواجهتها لأول مرة و false للتكرارات. يمكنك استخدام متغير خارج دالة الاستدعاء والتقاطه بالمرجع (by reference) باستخدام use (&$seen) بحيث تستمر التحديثات عبر الاستدعاءات التي تجريها array_filter لدالة الاستدعاء.
بعد التصفية، اطبع كل عنصر فريد في سطر منفصل بالترتيب الذي ظهر به لأول مرة في المدخل الأصلي.
تنسيق المدخلات:
- سطر واحد يحتوي على عناصر مفصولة بفاصلة (مثال:
apple,banana,apple,orange)
المخرجات المتوقعة: طباعة كل عنصر فريد في سطر منفصل، بترتيب ظهوره الأول في المدخلات
جرّب بنفسك
<?php
// قراءة المدخلات
$input = trim(fgets(STDIN));
// تقسيم المدخلات إلى مصفوفة (array)
$items = explode(',', $input);
// TODO: اكتب الكود الخاص بك أدناه
// استخدم array_filter() مع دالة استدعاء (callback function) مخصصة لإزالة التكرارات
// طباعة كل عنصر فريد في سطر منفصل
?>جميع دروس المنطق وتدفق التنفيذ
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة7التعامل مع التواريخ والأوقات
دالة 'date()'طوابع Unix الزمنية باستخدام 'time()'مقدمة إلى كائن DateTimeتنسيق كائنات DateTimeتعديل كائنات DateTimeمراجعة: حسابات التاريخ10التحديات النهائية
تحدي: فاحص الكلمات المتناظرةتحدي: تكرار الحروفتحدي: إجمالي سلة التسوقتحدي: تصفية العناصر الفريدة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرينتدرّب بنفسك: مترجم PHP عبر الإنترنت