الاستخراج باستخدام 'array_slice'
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 16 من 68.
تتيح لك الدالة array_slice() استخراج جزء من مصفوفة دون تعديل المصفوفة الأصلية. وعلى عكس الدوال مثل array_pop() أو array_shift() التي تقوم بتغيير المصفوفة المصدر، فإن array_slice() تقوم بإنشاء مصفوفة جديدة تحتوي فقط على العناصر التي تحددها.
تأخذ الدالة معاملين أساسيين: الإزاحة (offset) (موقع البداية) و الطول (length) (عدد العناصر المراد استخراجها):
<?php
$scores = [95, 87, 92, 78, 85, 90, 88];
$topThree = array_slice($scores, 0, 3);
print_r($topThree); // المخرجات: Array ( [0] => 95 [1] => 87 [2] => 92 )
print_r($scores); // المصفوفة الأصلية لم تتغير
?>يخبر المعامل offset لغة PHP من أين تبدأ الاستخراج (0 تعني العنصر الأول)، بينما يحدد المعامل length عدد العناصر التي سيتم أخذها. يمكنك أيضاً استخدام قيم سالبة للمعامل offset لبدء العد من نهاية المصفوفة.
تعد هذه الوظيفة مفيدة بشكل خاص عندما تحتاج إلى العمل مع مجموعة فرعية من البيانات، مثل عرض العناصر القليلة الأولى فقط من قائمة كبيرة أو استخراج نطاق معين من العناصر لمعالجتها، كل ذلك مع الحفاظ على بياناتك الأصلية سليمة.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلستتلقى ثلاثة مدخلات: مصفوفة من أسعار المنتجات بتنسيق JSON، وموضع البداية (offset)، وعدد العناصر المراد استخراجها (length). اقرأ جميع المدخلات الثلاثة، وقم بتحويل سلسلة JSON إلى مصفوفة، واستخدم array_slice() لاستخراج الجزء المحدد من المصفوفة، واطبع الجزء المستخرج باستخدام print_r().
تنسيق المدخلات: ثلاثة أسطر - السطر الأول يحتوي على مصفوفة JSON من الأرقام (مثال: [29.99,15.50,42.00,8.75,33.25])، والسطر الثاني يحتوي على الإزاحة (موضع البداية)، والسطر الثالث يحتوي على الطول (عدد العناصر المراد استخراجها)
المخرجات المتوقعة: الجزء المستخرج من المصفوفة، معروضاً باستخدام print_r()
ورقة مرجعية
تقوم الدالة array_slice() باستخراج جزء من مصفوفة دون تعديل المصفوفة الأصلية.
الصيغة: array_slice($array, $offset, $length)
- الإزاحة (offset): موضع البداية (0 = العنصر الأول)
- الطول (length): عدد العناصر المراد استخراجها
- استخدم إزاحة سالبة للبدء من نهاية المصفوفة
<?php
$scores = [95, 87, 92, 78, 85, 90, 88];
$topThree = array_slice($scores, 0, 3);
print_r($topThree); // Array ( [0] => 95 [1] => 87 [2] => 92 )
print_r($scores); // المصفوفة الأصلية لم تتغير
?>جرّب بنفسك
<?php
// قراءة مصفوفة الأسعار بتنسيق JSON
$json_input = fgets(STDIN);
$prices = (array)json_decode($json_input, true);
// قراءة الإزاحة (موقع البداية)
$offset = intval(fgets(STDIN));
// قراءة الطول (عدد العناصر المراد استخراجها)
$length = intval(fgets(STDIN));
// TODO: اكتب الكود الخاص بك أدناه لاستخراج الجزء المطلوب وإخراجه
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين