دوال تحويل المصفوفات
طبّقوا array_map وarray_filter وarray_reduce.
دوال تحويل المصفوفات درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
التحويلات الوظيفية للمصفوفات
توفر PHP ثلاث دوال قوية عالية الرتبة لتحويل المصفوفات دون استخدام حلقات صريحة:
array_map()— تحويل كل عنصرarray_filter()— الاحتفاظ بالعناصر التي تجتاز اختبارًاarray_reduce()— الاختزال إلى قيمة واحدة
array_map()
طبّق دالة استدعاء على كل عنصر وأرجع مصفوفة جديدة:
<?php
$prices = [10, 20, 30, 40];
$doubled = array_map(fn($p) => $p * 2, $prices);
print_r($doubled); // [20, 40, 60, 80]
// Multiple arrays
$a = [1, 2, 3];
$b = [10, 20, 30];
$sums = array_map(fn($x, $y) => $x + $y, $a, $b);
print_r($sums); // [11, 22, 33]array_filter()
احتفظ بالعناصر التي تستوفي شرط دالة الاستدعاء. وعند عدم تمرير دالة استدعاء، تُزال القيم الزائفة:
<?php
$numbers = [1, 2, 3, 4, 5, 6];
$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($evens); // [1=>2, 3=>4, 5=>6] — keys preserved!
$reindexed = array_values($evens); // re-index
$mixed = [0, 'hello', '', null, false, 42];
print_r(array_filter($mixed)); // [1=>'hello', 5=>42]array_reduce()
اختزل مصفوفة إلى قيمة واحدة من خلال تطبيق دالة استدعاء تراكميًا:
<?php
$cart = [
['name' => 'Widget', 'price' => 10],
['name' => 'Gadget', 'price' => 25],
['name' => 'Doohickey', 'price' => 5],
];
$total = array_reduce($cart, fn($carry, $item) => $carry + $item['price'], 0);
echo $total; // 40تسلسل التحويلات
سلسلة map وfilter وreduce لإنشاء مسارات بيانات واضحة:
<?php
$scores = [45, 80, 30, 90, 55, 70];
$passingAvg = array_sum(
array_filter($scores, fn($s) => $s >= 50)
) / count(array_filter($scores, fn($s) => $s >= 50));
echo $passingAvg; // 74.75استخدام array_map مع المفاتيح
لا تمرّر array_map المفاتيح. استخدم array_walk عندما تحتاج إلى المفتاح والقيمة معًا:
<?php
$prices = ['apple' => 1.0, 'banana' => 0.5, 'cherry' => 2.0];
$formatted = [];
array_walk($prices, function($price, $name) use (&$formatted) {
$formatted[$name] = '$' . number_format($price, 2);
});
print_r($formatted);array_chunk()
قسّم المصفوفة إلى أجزاء بالحجم المحدد:
<?php
$items = range(1, 10);
$batches = array_chunk($items, 3);
print_r($batches);
// [[1,2,3], [4,5,6], [7,8,9], [10]]array_combine()
أنشئ مصفوفة ترابطية بدمج مصفوفة مفاتيح مع مصفوفة قيم:
<?php
$keys = ['name', 'age', 'city'];
$values = ['Alice', 30, 'London'];
$person = array_combine($keys, $values);
print_r($person);
// ['name'=>'Alice','age'=>30,'city'=>'London']استخدام array_map لمحاكاة array_zip
لا يحتوي PHP على دالة zip أصلية، لكن array_map(null, ...) تنشئ بنية مشابهة لـ zip:
<?php
$names = ['Alice', 'Bob'];
$scores = [90, 85];
$zipped = array_map(null, $names, $scores);
print_r($zipped);
// [['Alice', 90], ['Bob', 85]]يحافظ array_map على المفاتيح
عند استخدام مصفوفة واحدة، يحافظ array_map على المفاتيح. استخدم array_values لإعادة فهرسة المصفوفة:
<?php
$assoc = ['a' => 1, 'b' => 2, 'c' => 3];
$result = array_map(fn($v) => $v * 10, $assoc);
print_r($result);
// ['a'=>10, 'b'=>20, 'c'=>30] — keys preservedarray_sum وarray_product
دوال اختزال سريعة للمصفوفات الرقمية:
<?php
$nums = [1, 2, 3, 4, 5];
echo array_sum($nums); // 15
echo array_product($nums); // 120 (1*2*3*4*5)
// Works with floats too
$prices = [1.5, 2.5, 3.0];
echo array_sum($prices); // 7.0تحقّق سريعًا
أي دالة تطبّق دالة استدعاء على كل عنصر وتعيد مصفوفة جديدة؟
مراجعة: دوال تحويل المصفوفات
الملخّص:
array_map()— تحويل كل عنصر إلى مصفوفة جديدةarray_filter()— الاحتفاظ بالعناصر التي تطابق دالة التحقّقarray_reduce()— اختزال العناصر إلى قيمة متراكمة واحدةarray_chunk()— تقسيم المصفوفة إلى مصفوفات فرعيةarray_combine()— إنشاء مصفوفة ترابطية من المفاتيح والقيمarray_sum/product()— عمليات اختزال رقمية سريعة
تعلم PHP مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 49
- الدروس
- 195
الأسئلة الشائعة
هل درس «دوال تحويل المصفوفات» مجاني؟
نعم — نص درس «دوال تحويل المصفوفات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «دوال تحويل المصفوفات»؟
طبّقوا array_map وarray_filter وarray_reduce. تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «دوال تحويل المصفوفات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المصفوفات المفهرسة والارتباطية
- المصفوفات متعددة الأبعاد
- فرز المصفوفات والبحث فيها
- دوال تحويل المصفوفات