شرح صفوف ومحتوى الفقرة
تزيل array_unique() القيم المكررة من المصفوفة، بينما تبدّل array_flip() المفاتيح مكان القيم لتحويل البحث الخطي البطيء O(n) إلى فحص فوري بالمفتاح O(1).
- تحتفظ
array_unique($arr)بأول مفتاح لكل قيمة فريدة دون إعادة ترقيم المفاتيح (مرر الناتج إلىarray_values()إذا أردت ترقيماً متسلسلاً من0). - تبدّل
array_flip($arr)المفاتيح بالقيم، ويشترط أن تكون القيم نصوصاً أو أعداداً صحيحة. - يُعد الفحص
isset($flipped[$needle])أسرع بكثير من تكرار استدعاءin_array($needle, $list, true)داخل الحلقات.
تزيل array_unique() الوسوم المكررة، وتعيد array_values() ترقيمها، ثم تبني array_flip() جدول بحث فوري بالمفتاح.
| الدالة | الوظيفة الأساسية | سلوك المفاتيح |
|---|---|---|
array_merge($a, $b) | إلحاق القوائم واستبدال المفاتيح النصية | تُستبدل المفاتيح النصية وتُعاد فهرسة الرقمية |
array_replace($a, $b) | استبدال القيم بالمفتاح (النصي والرقمي) | تحتفظ بجميع المفاتيح كما هي |
array_combine($k, $v) | ربط مصفوفة مفاتيح بمصفوفة قيم | تصبح عناصر $k هي المفاتيح |
array_diff($a, $b) | إرجاع قيم $a غير الموجودة في $b | تحتفظ بمفاتيح المصفوفة الأولى $a |
array_unique($a) | إزالة القيم المكررة | تحتفظ بأول مفتاح لكل قيمة فريدة |
<?php
$rawTags = ["php", "backend", "php", "api", "backend"];
$unique = array_values(array_unique($rawTags));
$lookup = array_flip($unique);
echo "Unique: " . implode(", ", $unique) . "\n";
echo "Has api? " . (isset($lookup["api"]) ? "Yes (index " . $lookup["api"] . ")" : "No") . "\n";
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تزيل array_unique() القيم المكررة من المصفوفة، بينما تبدّل array_flip() المفاتيح مكان القيم لتحويل البحث الخطي البطيء O(n) إلى فحص فوري بالمفتاح O(1). تحتفظ array_unique($arr) بأول مفتاح لكل قيمة فريدة دون إعادة ترقيم المفاتيح (مرر الناتج إلى array_values() إذا أردت ترقيماً متسلسلاً من 0). تبدّل array_flip($arr) المفاتيح بالقيم، ويشترط أن تكون القيم نصوصاً أو أعداداً صحيحة. يُعد الفحص isset($flipped[$needle]) أسرع بكثير من تكرار استدعاء in_array($needle, $list, true) داخل الحلقات.