مصفوفة Multidimensional في PHP
في الدروس السابقة تعرفنا علي مجموعة من انواع المصفوفات Array وهي Associative Array و Indexed Array و تعرفنا على كل نوع من أنواع array ماذا يفعل, لكن في هذا الدرس سوف نتعرف على النوع الثالث و هو Multidimensional Array.
ماهي مصفوفة Multidimensional Array؟
هي عبارة عن مصفوفة يمكننا إنشاء بداخلها مجموعة من المصفوفات مثل Indexed Array and Associative Array في الدروس السابقة كان لا يمكن فعل هذا مع indexed Array أو Associative Array حيث كانت كل واحدة منهم مختصة بشيئ, كان يمكن إنشاء مصفوفه داخلها مصفوفه من indexed Array وكذلك الأمر كان ينفع مع النوع الثاني و هو Assocarive Array وكان لا يمكن أن يحدث العكس وهو الذي داخل indexed Array داخل Assocative Array لكن يمكن أن يحدث هذا مع Array Multidimensional لنأخذ بعض الأمثلة على هذا النوع و نتعرف كيف يعمل, لكن في البداية هذا شكل كتابة Array.
[ 3 ] Array Multidimensional
Syntax :
array(
array( Element , Element , Element),
array( Element , Element , Element ),
array( Element , Element , Element ),
)
مثال 1
في المثال السابق قمنا بإنشاء مصفوفة داخل متغير بإسم Array و بها مجموعة من المصفوفات الفرعية بداخلها, و لنفرض أن المصفوفة ستكون الدورات الذي سيقدمها موقعنا خلال الأيام الخمس القادمة, تحمل المصفوفة الفرعية رقم 0 اللغات الذي سنقدمها في اليوم الأول و هي #Python And Java And C و في اليوم الثاني سنقدم اللغات Html And Html5 And Css3 ثم سيستخدم الموقع تلك اللغات المذكورة في المصفوفة رقم 0 في الشبكات و سيتم إستخدام python في الشبكات وكذلك java و #C, اظن انكم فهمتوا الطريقة, لآحظوا عند طبع جميع محتويات المصفوفة الرئيسية و كما نعرف أنها بإسم Array و بإستخدام print_r يمكن طبع المصفوفة
مصفوفة رئيسية تحمل مجموعة من المصفوفات الفرعية, كما يمكن طبع شيئ معين من داخل المصفوفات الفرعية لأن كل مصفوفة فرعية لها رقم و لنفترض أننا نريد طبع دورة html index الموجودة داخل المصفوفة الفرعية رقم 3 و html index عنصر رقم 0 كما تشاهدوا في الصورة و يمكن الطباعة من خلال الكود [echo $Array[3][0, لآحظوا تحدثوا مع الكود بالضبط كأنكم تتحدثون مع أحد اصدقائكم, قلت له إطبع من داخل المصفوفة الرئيسية المصفوفة الفرعية الذي رقمها 3 و من داخل المصفوفة الفرعية إطبع العنصر رقم 0 الذي هو html index.
لكن إلى الآن المثال لم يكن معقد هذا فقط مصفوفة داخل مصفوفة, لنقوم بتعقيد المثال اكثر من خلال مثال آخر.
مثال 2
لنفترض على سبيل المثال الدورات المذكورة داخل المصفوفة الفرعية رقم 3 الذي بها html index و html5 index و css3 style index.1.2 و نريد أن نذكر فريق العمل الذي يعمل على تلك الدورات داخل مصفوفة بها مجموعة من المصفوفات الفرعية, يعني سيكون مصفوفة فرعية داخل مصفوفه فرعية اخرى و ستكون تلك المصفوفة لها صلاحيات معينة عن المصفوفات الفرعية الذي بداخلها و سيكون فريق العمل الذي يقدم تلك الدورات هم Ali و Ahmed و date و kaissar و lana و spider.
شاهد كيف تم تنفيذ العملية و نحن نعرف الآن بأن المصفوفة رقم 4 بها مصفوفات فرعية ايضاً و هنا يكون بها مصفوفة فرعية رقم 0 و بها عناصر و ايضاً يوجد مصفوفة اخرى رقمها 1 و بها عناصر و نحن الآن نريد أن نقوم بطبع spider الموجود داخل المصفوفة الفرعية رقم 1 و المصفوفة الفرعية رقم 4 دخل مصفوفة رئيسية بإسم Array و سيكون كود الطبع [echo $Array[4[[1][2.
و إذا لم تفهم شاهد العناصر في الصور ذات اللون الأصفر و انت ستفهم الأمر اكثر, و كما يمكن إنشاء مصفوفة فرعية داخل مصفوفة فرعية في أي مكان داخل المصفوفة الرئيسية, لكن لي الان نحن نتعامل مع indexed Array وهي بنا ناخذ مثال عن كيفية انشاء مصفوفة من نوع Associative Array .
مثال 3
في الصورة لم يتغير شيئ سوى نوع المصفوفة و قمنا بتحويل المصفوفة من نوع Indexed Array إلى Associative Array و سيكون شكل المصفوفة بعد الطباعة
وكما يمكن أن تقوم بطبع أي عنصر من داخل أي مصفوفة على سبيل المثال نريد طبع عنصر html5 من داخل مصفوفة Dey 2 و سيكون شكل العملية أثناء طبع العنصر [echo $Array ['Dey 2'][0, لنقوم بإنشاء مصفوفات فرعية داخل كل مصفوفة و تلك المصفوفات ستكون أسماء الأشخاص الذي يقدمون كل دورة منهم.
شاهدوا كيف كان الكود من قبل و الآن, تمت إضافة الأشخاص العاملين على الدورات و تم إضافة المصفوفات الفرعية بطريقة جيدة, لآحظوا الآن كيف سيكون الناتج على السيرفر.
الآن يمكن طباعة أي عنصر من داخل أي مصفوفة فقط كل ما عليك هو معرفة إسم العنصر و اين يقع العنصر, على سبيل المثال نريد طبع إسم الشخص الذي يقدم دورة c#, network كيف سيكون عملية الطبع؟ستكون عملية الطباعة بالشكل
echo $Array['Dey 3'][3]['c# network']
الآن اصبح كل شيئ واضح و إن لم تفهموا الأمر اكتبوا استفساراتكم في تعليقات هذا الدرس.
ليست هناك تعليقات:
إرسال تعليق