انتقل إلى محتوى الدرس
الدرس 32
دورة PHP

دوال المصفوفات للبحث والدمج والمقارنة والتقاطع في PHPPHP Array Functions Searching Diffing and Intersecting

تعلّم دوال المصفوفات للبحث والدمج والمقارنة والتقاطع في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
10
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

توفر لغة PHP أربع دوال قياسية لإضافة العناصر أو سحبها من طرفي المصفوفة (البداية والنهاية):

  • array_push($arr, $val) (أو الصيغة الأسرع $arr[] = $val): إضافة عنصر أو أكثر في نهاية المصفوفة.
  • array_pop($arr): سحب وحذف العنصر الأخير من نهاية المصفوفة وإرجاع قيمته.
  • array_unshift($arr, $val): إدراج عنصر في بداية المصفوفة (مع إعادة ترقيم الفهارس الرقمية).
  • array_shift($arr): سحب وحذف العنصر الأول من بداية المصفوفة وإرجاع قيمته.
مخطط دوال المصفوفات الأساسية في PHP 8.4 للبحث الصارم بـ in_array واستخراج الشرائح والدمج والتفكيك
PHP
<?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);

لاستخراج جميع مفاتيح المصفوفة في قائمة مفهرسة جديدة نستدعي array_keys($array)، ولاستخراج جميع القيم مع إعادة ترقيم فهارسها من 0 نستدعي array_values($array).

ولأخذ شريحة جزئية من المصفوفة دون تعديل الأصل نستخدم array_slice($array, int $offset, ?int $length = null). كما يمكنك مقارنة المصفوفات عبر array_diff($a, $b) (العناصر الموجودة في الأولى وغير الموجودة في الثانية) و array_intersect($a, $b) (العناصر المشتركة بينهما).

PHP
<?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
PHP
<?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
<?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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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 ويرسلها إلى متصفح العميل بعد التنفيذ.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم دوال الإضافة والحذف من الأطراف للتحقق من المخرجات.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم البحث بـ in_array و array_search وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

أي دالة في PHP تحذف العنصر الأخير من نهاية المصفوفة وتُرجع قيمته؟

اختر دالة سحب العنصر الأخير من المصفوفة.

02

لماذا يجب تمرير القيمة true كمعامل ثالث في استدعاء الدالة in_array($needle, $haystack, true)؟

حدد فائدة تفعيل المقارنة الصارمة في in_array.

03

ماذا تُرجع الدالة array_search($needle, $haystack, true) عند العثور على القيمة المطلوبة داخل المصفوفة؟

ميّز بين مخرجات in_array ومخرجات array_search.

04

أي دالة تستخرج شريحة جزئية من المصفوفة (مثل 3 عناصر بدءاً من الفهرس 0) دون تعديل المصفوفة الأصلية؟

اختر دالة اقتطاع شريحة من المصفوفة.

05

عند دمج مصفوفتين ترابطيتين عبر [...$defaults, ...$custom] أو array_merge($defaults, $custom)، ماذا يحدث إذا اشتركتا في المفتاح النصي "theme"؟

اختر قاعدة التعامل مع المفاتيح النصية المكررة عند الدمج.

06

هل تقوم عبارة التفكيك المتماثل [$first, $second] = [100, 200]; بإسناد القيمة 100 للمتغير $first والقيمة 200 للمتغير $second؟

أكد آلية عمل التفكيك المتماثل للمصفوفات.

07

هل يدعم التفكيك المتماثل للمصفوفات استخراج المفاتيح الترابطية بالاسم مثل ['host' => $host] = $config;؟

تحقق من دعم تفكيك المفاتيح النصية في PHP.

08

أي دالتين تستخرجان جميع المفاتيح أو جميع القيم من مصفوفة ترابطية في قائمة مفهرسة رقمياً من الصفر؟

اختر دالتي استخراج المفاتيح والقيم.