"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني استخدام "array_unique" لإزالة الكائنات المكررة في PHP؟

كيف يمكنني استخدام "array_unique" لإزالة الكائنات المكررة في PHP؟

تم النشر بتاريخ 2024-11-13
تصفح:919

How Can I Use `array_unique` to Remove Duplicate Objects in PHP?

كائنات فريدة ذات array_unique

في PHP، تساعد وظيفة array_unique في إزالة القيم المكررة من المصفوفة. ومع ذلك، عند العمل مع المصفوفات التي تحتوي على كائنات، قد لا يبدو أن هذه الوظيفة تعمل كما هو متوقع.

أدخل الحل:

بالنسبة لمصفوفات الكائنات، يمكنك استخدام array_unique مع علامة المقارنة SORT_REGULAR. ترشد هذه العلامة الوظيفة إلى مقارنة الكائنات حسب خصائصها بدلاً من مراجع الكائنات الخاصة بها.

التنفيذ:

ضع في اعتبارك مجموعة من كائنات الدور:

دور الطبقة { اسم $ العام؛ } $foo = دور جديد(); $foo->name = 'test1'; $bar = $foo; $bam = دور جديد(); $bam->name = 'test2'; $test = array($foo, $bar, $bam);

class Role {
    public $name;
}

$foo = new Role();
$foo->name = 'test1';

$bar = $foo;

$bam = new Role();
$bam->name = 'test2';

$test = array($foo, $bar, $bam);

print_r(array_unique($test, SORT_REGULAR));

print_r(array_unique($test, SORT_REGULAR));

صفيف ( [0] => كائن الدور ( [الاسم] => الاختبار1 ) [2] => كائن الدور ( [الاسم] => الاختبار2 ) )

تحذير:
Array (
    [0] => Role Object
        (
            [name] => test1
        )

    [2] => Role Object
        (
            [name] => test2
        )
)

من الضروري ملاحظة أن array_unique مع SORT_REGULAR يستخدم المقارنة "=="، وليس المقارنة الصارمة ("==="). وهذا يعني أن الكائنات ذات الخصائص المتطابقة ولكن بمراجع كائنات مختلفة ستظل تعتبر مكررة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3