في هذا الدرس 6تصفّح المواضيع
توفر لغة PHP أربع دوال قياسية لإضافة العناصر أو سحبها من طرفي المصفوفة (البداية والنهاية):
array_push($arr, $val)(أو الصيغة الأسرع$arr[] = $val): إضافة عنصر أو أكثر في نهاية المصفوفة.array_pop($arr): سحب وحذف العنصر الأخير من نهاية المصفوفة وإرجاع قيمته.array_unshift($arr, $val): إدراج عنصر في بداية المصفوفة (مع إعادة ترقيم الفهارس الرقمية).array_shift($arr): سحب وحذف العنصر الأول من بداية المصفوفة وإرجاع قيمته.
<?php
$queue = ['task-1', 'task-2'];
array_push($queue, 'task-3');
array_unshift($queue, 'urgent-0');
$first = array_shift($queue);
$last = array_pop($queue);
echo $first . ' | ' . $last . ' | Remaining: ' . count($queue);
للتحقق من وجود قيمة معينة داخل مصفوفة، نستخدم الدالة in_array($needle, $haystack, bool $strict = false) التي تُرجع true أو false. وللبحث عن القيمة وإرجاع المفتاح أو الفهرس الخاص بها نستخدم array_search($needle, $haystack, bool $strict = false) التي تُرجع المفتاح المطابق أو false عند عدم العثور عليها.
احرص دائماً على تمرير القيمة true في المعامل الثالث ($strict = true) لإلزام محرك PHP بالمقارنة الصارمة (===) للقيمة والنوع معاً!
<?php
$roles = ['viewer', 'editor', 'admin'];
if (in_array('editor', $roles, true)) {
$idx = array_search('editor', $roles, true);
echo 'Editor found at index: ' . $idx;
}
لاستخراج جميع مفاتيح المصفوفة في قائمة مفهرسة جديدة نستدعي array_keys($array)، ولاستخراج جميع القيم مع إعادة ترقيم فهارسها من 0 نستدعي array_values($array).
ولأخذ شريحة جزئية من المصفوفة دون تعديل الأصل نستخدم array_slice($array, int $offset, ?int $length = null). كما يمكنك مقارنة المصفوفات عبر array_diff($a, $b) (العناصر الموجودة في الأولى وغير الموجودة في الثانية) و array_intersect($a, $b) (العناصر المشتركة بينهما).
<?php
$user = ['id' => 7, 'name' => 'Lina', 'tier' => 'gold'];
$keys = array_keys($user);
$lessons = ['L1', 'L2', 'L3', 'L4', 'L5'];
$pageOne = array_slice($lessons, 0, 2);
echo implode(', ', $keys) . ' | ' . implode(', ', $pageOne);
لدمج مصفوفتين أو أكثر في مصفوفة جديدة موحدة، نستخدم الدالة array_merge($arr1, $arr2) أو صيغة معامل الفرد الحديثة [...$arr1, ...$arr2] في PHP 8.
في كلتا الطريقتين، تُلحق العناصر ذات الفهارس الرقمية بالتتابع مع إعادة ترقيمها، بينما في المفاتيح النصية المتشابهة تحل قيمة المصفوفة اللاحقة محل قيمة المصفوفة السابقة.
<?php
$defaults = ['theme' => 'light', 'perPage' => 10];
$custom = ['theme' => 'dark', 'compact' => true];
$merged = [...$defaults, ...$custom];
echo $merged['theme'] . ' (' . $merged['perPage'] . ')'; // dark (10)
يتيح التفكيك المتماثل للمصفوفات (Symmetric Array Destructuring) استخراج القيم من مصفوفة مفهرسة أو ترابطية وتوزيعها مباشرة في متغيرات مستقلة بخطوة واحدة عبر كتابة الأقواس المربعة على يسار علامة الإسناد =.
يمكنك تجاوز العناصر غير المطلوبة بفاصلة [, $second] = $row; أو استخراج مفاتيح ترابطية محددة بالاسم عبر الصيغة ['id' => $id, 'slug' => $slug] = $record;.
<?php
$rgb = [111, 66, 193];
[$red, $green, $blue] = $rgb;
$course = ['code' => 'PHP-84', 'lessons' => 56];
['code' => $courseCode, 'lessons' => $totalLessons] = $course;
echo $courseCode . ' (' . $totalLessons . ') | R=' . $red;
يلخص الجدول المرجعي التالي أهم دوال وصيغ معالجة المصفوفات في PHP 8.4:
| الدالة / الصيغة | الفئة الوظيفية | القيمة المُرجعة والسلوك |
|---|---|---|
array_push($a, $v) / array_pop($a) | عمليات نهاية المصفوفة | إضافة في النهاية / سحب وحذف العنصر الأخير (تعدّل المصفوفة) |
array_unshift($a, $v) / array_shift($a) | عمليات بداية المصفوفة | إدراج في البداية / سحب وحذف العنصر الأول (تعدّل المصفوفة) |
in_array($val, $arr, true) | البحث الصارم | تُرجع true عند وجود القيمة مع تطابق النوع (===) |
array_search($val, $arr, true) | استخراج مفتاح القيمة | تُرجع المفتاح أو الفهرس المطابق أو false عند عدم وجوده |
array_keys($a) / array_values($a) | استخراج القوائم | تُرجع مصفوفة مفهرسة بجميع المفاتيح / أو بجميع القيم |
array_slice($a, $offset, $len) | اقتطاع الشرائح | تُرجع شريحة جزئية جديدة دون تعديل المصفوفة الأصلية |
array_merge($a, $b) / [...$a, ...$b] | دمج المصفوفات | تُرجع مصفوفة مدمجة جديدة (القيم اللاحقة تحل محل المفاتيح النصية المكررة) |
[$x, $y] = $arr | التفكيك المتماثل | توزيع عناصر المصفوفة مباشرة في متغيرات مستقلة |
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
لقد أتممت بهذا الدرس الوحدة الرابعة (php-arrays) بإتقان دوال الأطراف، والبحث الصارم عبر in_array() و array_search()، واستخراج المفاتيح والشرائح، والدمج عبر array_merge() ومعامل الفرد، والتفكيك المتماثل للمصفوفات. الخطوة التالية هي الانتقال إلى الوحدة الخامسة (php-functions) بدءاً من الدرس السادس والعشرين (php-functions) لبناء الدوال المخصصة القابلة لإعادة الاستخدام.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Array Functions دوال المصفوفات
- تعلّم دوال المصفوفات للبحث والدمج والمقارنة والتقاطع في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
- للمراجعة
- 02 Push Pop Shift and Unshift دوال الإضافة والحذف من الأطراف
- المفهوم الأساسي لقسم دوال الإضافة والحذف من الأطراف في لغة PHP الحديثة.
- للمراجعة
- 03 Searching in_array and array_search البحث بـ in_array و array_search
- الصياغة البرمجية والتطبيق العملي المباشر لقسم البحث بـ in_array و array_search.
- للمراجعة
- 04 Extracting Keys Values and Slices استخراج المفاتيح والقيم والشرائح
- قواعد التحقق وأفضل الممارسات القياسية الخاصة بقسم استخراج المفاتيح والقيم والشرائح.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 PHP PHP
- PHP: Hypertext Preprocessor
- لغة البرمجة النصية على جانب الخادم لبناء تطبيقات الويب الديناميكية وواجهات البرمجة.
- للمراجعة
- 02 CLI CLI
- Command-Line Interface
- واجهة سطر الأوامر التي تتيح تشغيل ملفات PHP مباشرة عبر الطرفية.
- للمراجعة
- 03 FPM FPM
- FastCGI Process Manager
- مدير عمليات FastCGI عالي الأداء لمعالجة طلبات خادم الويب في PHP.
- للمراجعة
- 04 HTML HTML
- HyperText Markup Language
- لغة الترميز القياسية التي يولدها محرك PHP ويرسلها إلى متصفح العميل بعد التنفيذ.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم دوال الإضافة والحذف من الأطراف للتحقق من المخرجات.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم البحث بـ in_array و array_search وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
أي دالة في PHP تحذف العنصر الأخير من نهاية المصفوفة وتُرجع قيمته؟
اختر دالة سحب العنصر الأخير من المصفوفة.
لماذا يجب تمرير القيمة true كمعامل ثالث في استدعاء الدالة in_array($needle, $haystack, true)؟
حدد فائدة تفعيل المقارنة الصارمة في in_array.
ماذا تُرجع الدالة array_search($needle, $haystack, true) عند العثور على القيمة المطلوبة داخل المصفوفة؟
ميّز بين مخرجات in_array ومخرجات array_search.
أي دالة تستخرج شريحة جزئية من المصفوفة (مثل 3 عناصر بدءاً من الفهرس 0) دون تعديل المصفوفة الأصلية؟
اختر دالة اقتطاع شريحة من المصفوفة.
عند دمج مصفوفتين ترابطيتين عبر [...$defaults, ...$custom] أو array_merge($defaults, $custom)، ماذا يحدث إذا اشتركتا في المفتاح النصي "theme"؟
اختر قاعدة التعامل مع المفاتيح النصية المكررة عند الدمج.
هل تقوم عبارة التفكيك المتماثل [$first, $second] = [100, 200]; بإسناد القيمة 100 للمتغير $first والقيمة 200 للمتغير $second؟
أكد آلية عمل التفكيك المتماثل للمصفوفات.
هل يدعم التفكيك المتماثل للمصفوفات استخراج المفاتيح الترابطية بالاسم مثل ['host' => $host] = $config;؟
تحقق من دعم تفكيك المفاتيح النصية في PHP.
أي دالتين تستخرجان جميع المفاتيح أو جميع القيم من مصفوفة ترابطية في قائمة مفهرسة رقمياً من الصفر؟
اختر دالتي استخراج المفاتيح والقيم.