المصفوفات (Arrays)


اول شيء سيهمنا التحدث في هذا الدرس هو :

ما هي المصفوفات ؟

لقد تعلمنا سابقا عن ماهية المتغيرات وكيفية استخدامها ولكن ماذا لو احتجت لتعيين اكثر من قيمة
لهذا المتغير ؟ وهذه هي المصفوفات يا صديقي بكلمات بسيطة هي مجموعة من المعلومات
يكون لكل معلومة مفتاح (keys) خاص بها ويتم ترتيبها بداخل متغير واحد فقط.

لنقل بأنك لم تفهمها بعد فالنذهب الى عالمنا خارج هذه الشاشة ولننظر لهذا المثال:

على سبيل المثال كنت جالسا في احد المطاعم وقد رايت احد الاشخاص يجلس على طاولة وهذا الشخص
من المؤكد انه لديه العديد من المعلومات الخاصة به مثلا اسمه الاول واسمه الثاني وعمره فالنقل بأنك تريد
وضع هذه المعلومات في متغيرات فستحتاج الى ثلاثة متغيرات صحيح مثلا:

كود PHP:
                       $firstname 
$lastname 
$age 
الان انت ترى بأن زوجته جالسة بجواره على نفس الطاولة ولديها ايضا نفس المعلومات اسمها الاول واسمها الثاني وعمرها حسنا لو اردنا ان نضعها داخل متغيرات بهذا اصبح لدينا كم هائل من المتغيرات

ومن هنا اتت فكرة المصفوفات..

فأذا وضعنا المعلومات السابقة بداخل جدول سيكون شكلة كالتالي مثلا :

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

فوجدنا بأن المصفوفة هي مجرد صف من المعلومات والمفاتيح
هي الاعمدة فائدة المفاتيح هي بأبقاء المعلومات مصطفة بشكل جيد حتى نستطيع استخدامها بالشكل المناسب.

الان لنتعلم انواع المصفوفات وهي تقسم الى نوعان المصفوفات الرقمية والمصفوفات الحرفية
والمصفوفات الرقمية تعتبر الاساس ولكن الاثنتين يؤدين نفس الغرض منهن..

المصفوفات الرقمية :
وهي التي نستخدمها بأستخدام المفاتيح وتبدأ بأغلب الاوقات بالقيمة صفر
ونسمي القيم الموجوده في المصفوفة بالعناصر والمفتاح الخاص به يكون هو الفهرس الخاص بهذه القيمة.

لنتعلم الان طريقة كتابتها >>

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

سهلة جدا اليس كذلك ^^

وهناك ايضا طريقة اخرى واختر ما تفضلة وهذه الطريقة تستخدم اذا كنت تحتاج في بعض الاحيان
اذا اردت ان تقوم بوضع مفاتيح او فهارس للقيم التي ستدخل الى المصفوفة لنرى هذا المثال..

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

سهلة جدا ولكن تحتاج الى القليل من التركيز والمتابعة ^^

والان ماذا لو اردنا تعبئة المصفوفة بمجموعة ارقام مكونه من 1 الى 10 مثلا؟؟

سيكون صعبا ان تقوم بكتابة كود المصفوفة 10 مرات ولكن ماذا لو استخدمت احدى عبارات التكرار^^

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

جميل^^

لحظة ماذا لو اردنا تغيير احد عناصر المصفوفة الى عنصر اخر

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

قوموا بتجربة الاكواد التي ترونها بأنفسكم وتمعنوا ماذا ستفعل ..

حاول ان تقوم بطباعة جميع القيم التي خصصناها في المصفوفة من المفتاح رقم صفر الى المفتاح رقم 9

وانظر ماذا ستطبع ..

حسنا كل الذي تحدثنا عنه كان للمصفوفات التي نعرف كم مفتاح تحتوي ولكن ماذا لو كنا لا نعرف كم
عنصر يوجد بداخل هذه المصفوفة؟؟

سأجيب عن هذا السؤال لتنظر الى الكود التالي وسأشرحه بعد النظر اليه..

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

لنقم بشرح الان ما سبق

اولا قمنا بتعيين القيم من واحد الى 11 في المصفوفة y ومن ثم قمنا بطلب عدد القيم الموجوده في
المصفوفة عن طريق الدالة count وقمنا بطباعتها ومن ثم قمنا بوضع القيم
في عبارة تكرار لتقوم بطباعتها واحده بعد الاخرى ^^

المصفوفات الحرفية

اختلافها عن المصفوفات الرقمية هو ان الفهارس او المفاتيح في المصفوفات الرقمية هي ارقام
ولكن في المصفوفات الحرفية تكون حروف او نصوص .

لنعد الى مثالنا السابق وهو مثال الزوج والزوجة فماذا لو اردنا ان نضع مثلا الاسم الاول هو albert

وهكذا على كل المصفوفة سيكون من الصعب فعل ذلك بالمصفوفات الرقمية ولكنه اسهل في المصفوفات الحرفية

لنقم بعمل مثال يبين ذلك ^^

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

ملاحظة (1):نلاحظ بأنني قمت بكتابة firstname عوضا عن المفتاح رقم صفر في المصفوفة الرقمية
وانني قمت بوضع <= هذه الاشارة لتبين بأن الfirstname القيمة المخصصة له هو Albert
وانهيت الصف الاول بالفاصلة ,
ملاحظة (2): عندما اردت طباعة اي عنصر من المصفوفة قمت بطباعته مثل المصفوفة الرقمية ولكن الفرق
هو وضع المفتاح بشكل نص وهو firstname عوضا عن الرقم صفر .

وطريقة تغير ما بداخل المصفوفة الحرفية بنفس اسلوب المصفوفة الرقمية وهو التالي :

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي


نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

هل لاحظت لا يوجد اي فرق ^^

لنقل الان بأننا نريد طباعة المصفوفة كاملة ( هناك طريقة لطباعة هذه المصفوفة وتسمى foreach)

وطريقة كتابتها كالتالي =>

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

سأشرح ما سبق بعدة كلمات :

$array = المتغير الذي قمنا بتعيينة للمصفوفة او الذي وصعنا القيم به $husband
$key = المفتاح او الفهرس الذي قمنا بتعيينة وفي مثالنا السابق سيكون firstname
$value =القيمة التي قمنا بتعيينها تحت هذا المفتاح وسيكون Albert

لنقم الان بتطبيق المثال مع هذه العبارة ^^

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

قم بفتح الملف في المتصفح وانظر مالذي حصل ^^
مممممممم ما رايك جميل وبسيط وسهل ايضا ^^

هناك نوع من المصفوفات ويسمى المصفوفات ثنائية الابعاد وهي تتكون من مصفوفتين بداخل بعضهما البعض..

فتذكر بأنه لهذا الرجل زوجة تجلس بجانبة على هذه الطاولة ويوجد طاولة اخرى بهذا المطعم
يجلس عليها زوج وزوجة لننظر كيف يتم التعامل مع هذه الحالة فهي سهلة حقا ..

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

هل لاحظ قمنا بتعريف متغير بأسم table1 ووضعنا به مصفوفتين الاولى للزوج ومعلوماته
والثانية للزوجة ومعلوماتها

تأكد بأنك قد كتبت الكود بالشكل الصحيح ولا سيظهر لديك خطأ

لنقم الان بطباعة هذه المصفوفات ولنقل بأننا نريد ان نطبع الاسم الاول من الزوج والزوجة^^

نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

انظر كيف قمنا بطلب اسم المصفوفة الاولى وهو husband وطلبنا منها الفهرس firstname وقام بطباعة الاسم الاول للزوج..

بهذا نكون قد انتهينا من درس المصفوفات

وسنتكلم في الدرس القادم عن بعض الدوال للمصفوفات مثل ترتيب المصفوفات ابجديا او عشوائيا
اتمنى من الله ان اكون قد وفقت في الشرح

والسلام عليكم