كيفية الـتاكد من أن إسم لم يتكرر في مصفوفة

السلام عليكم و رحمة الله تعالى و بركاته

انا عندي عدة أسماء في ملف نصي و أريد طريقة لأتأكد بأن هذا الإسم لم يتكرر في الملف

لو سمحتم

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

توجد طرق كثيرة جدا، ما فكرت فيه الآن بسيط وهو قلب قيم المصفوفة إلى مفاتيح ثم إرجاعها مرة أخرى، وذلك عبر الدالة array_flip

مثال:

    $arr = array('a'=>'A','b'=>'B','c'=>'A');
    $arr = array_flip($arr);
    $arr = array_flip($arr);
    print_r($arr);

ولكن كما يُقال، هذه الطريقة ليست لصناعة الصواريخ!!

الآن بعدما شربت قهوة الصباح أنصحك باستخدام الدالة array_unique ^_^

    $arr = array(':)','^_^','ツ',':D','^_^','ツ');
    $arr = array_unique($arr);
    print_r($arr);

طريقة فعلها تختلف من لغة إلى أخرى، في بايثون مثلًا

for i, name in enumerate(names[:-2]):
    if name in names[i+1:]:
      #الاسم مكرر

هل تعرف كيف تفعلها في php مع العلم أنه سيتم التطبيق على ملف txt

يعني يتم إستيراد الأسماء من ملف txt و التأكد من عدم تكرار إسم

و إذا وجد إسم مكرر يستم حذفه و شكرا لك

آسف, لا أعلم كيف تُفعل في php ولكن أظنها ستكون قريبة. والآن بما أنك ذكرت أنك تريد فقط حذف المتكرر، ففي بايثون دالة تقوم بذلك

set(names)

أتمنى أن يساعدك أحد أخبر مني في php

حسنا شكرا لك أتمنى منك أن تعمل لي سكربت بشيط يقوم بذلك و شكرا لك

إذا كان في إستطاعتك و شكرا

with open("file.txt", "r", encoding='utf-8') as myfile:
    #افترضت أن كل سطر يحوي اسمًا واحدًا فقط
    names = myfile.read().split('\n')

names = list(set(names)) #هذه مصفوفة الاسماء بعد حذف الاسماء المكررة

print(names) #إذا أردت أن تطبع قائمة الأسماء

#إذا أردت أن تصدر الاسماء إلى ملف نصي
with open("newfile.txt", "w", encoding='utf-8') as myfile:
    output = ''
    for name in names:
        output += name + '\n'
    myfile.write(output)

شكرا لك أخي العزيز

مجهول
  • حذف بواسطة المستخدم