متطلبات قبل البدأ :
- مراجعة الدرس الثالث عشر: المصفوفات الرقميه
- مراجعة الدرس الرابع عشر: المصفوفات الحرفيه
اهداف الدرس:
- ترتيب المصفوفات ( Sorting )
- اعادة ترتيب المصفوفات ( Reordering )
- استكشاف المصفوفات ( Navigation )
- تعداد المصفوفات ( Counting )
- الداله array_walk
ترتيب المصفوفات ( Sorting ) :نحتاج كثيرا الى ان نقوم بترتيب المصفوفات حسب الاسم , العمر , الميلاد
وغيرها , مثل ما ترى في بعض محركات البحوث او مكتبات البرامج , حيث ان لديك
خيار يسمح لك بالترتيب كيفما تريد, ولكن نريد ان نعرف كم يتم ذلك , وماهي
الدوال المستخدمه في ذلك, يوجد نوعان من الترتيب, اما ترتيب مصفوفه احادية
الابعاد, او مصفوفه متعددة الابعاد, بالنسبه للاولى فهي تعتبر سهله, ولكن
الاخرى تعتبر اصعب وتحتاج الى تركيز, لكن لا تخف سوف نحاول ان نبسطها قدر
الامكان, لنبدأ بالمصفوفات الاحادية الابعاد:
الترتيب طبيعيا
الداله sort() :تستخدم هذه الداله لترتيب الكود حسب الاسبقيه (
للمصفوفات الرقميه ) , ونعني بذلك من الاصغر الى الاكبر, في حالة الاحرف ( ا , ب , ت ….. ي )
وفي حالة الارقام ( 0 , 1 , 2 ) وتعتبر هذه الداله حساسه لحالة الاحرف, اي
الحرف ( A ) اصغر من الحرف ( Z ) ولكن الحرف ( Z ) اصغر من الحرف ( a ),
افتح محرر الاكواد وقم بكتابة التالي:
وسوف يكون ناتجنا هو التالي:
الداله asort() والداله ksort() :اذا كنت تستخدم المصفوفات الحرفيه, فهنا تجد مبتغاك, ونستخدم دوال
مختلفه عن الرقميه , لاننا في المصفوفات الحرفيه نحتاج الى العنصر والفهرس
ليتم ترتيبهما مع بعضهما البعض , ولكن في الرقميه نحتاج الى العنصر فقط.
نستخدم الداله asort ونقوم بترتيبها حسب العنصر, ولكن في الداله ksort فسوف
نقوم بالترتيب حسب الفهرس او المفتاح, افتح محرر الاكواد وقم بكتابة
التالي:
وسوف يكون ناتجنا هو التالي:
الترتيب العكسي
رأيت ان الداله sort و ksort و asort تقوم بترتيب العناصر من الاصغر الى
الاكبر, ماذا لو اردنا ان نقوم بالترتيب من الاكبر الى الاصغر, كيف سنقوم
بفعل ذلك ؟ نستخدم نظائر الدوال التي قمنا بمعرفتها قبل قليل وهي rsort و
krsort و arsort وسوف تقوم بالتريب بشكل عكسي, لا تحتاك ان ادعم لك الدوال
بالامثله , فقط قم باستبدال دالة الترتيب في الامثله بالاولى بالداله (
rsort ) في حالة المصفوفه الرقميه, او استبدل دالة الترتيب في مثال
المصفوفات الحرفيه بأحدى الدالتين ( arsort ) او ( krsort )
اعادة ترتيب المصفوفات ( Reordering ) :في بعض الحالات تريد ان تقوم بترتيب المصفوفات بطريقه معينه, مثل لو
لديك مصفوفه بها الاعداد ( 1 , 2 , 3 ) وتريد ان تقوم بترتيبها بالطريقه ( 3
, 1 , 2 ) , فيمكن فعل ذلك بلغة PHP وفي هذا القسم سوف نتعلم كيفية القيام
بهذه الخصائص.
الداله shuffle() :تقوم هذه الداله بترتيب عناصر المصفوفه عشوائيا , والطريقه لقيام بالترتيب عشوائيا هي كالتالي, افتح محرر الاكواد وقم بكتابة التالي:
لو قمت بتشغيل هذا البرنامج, سوف تلاحظ ان في كل مره تقوم بها بتحديث
الصفحه او اعادة التشغيل , سترى الترتيب يختلف, قم بتجربة البرنامج وستعرف
ما اعنيه
الداله array_reverse() :تقوم هذه الداله بإنشاء مصفوفه جديده ولكن العناصر تكون بترتيب عكسي , لاحظ المثال التالي:
والناتج من هذه الداله هو التالي:
الداله array_push() :تقوم هذه الداله بإضافة عنصر جديد في
اخر المصفوفه, لاحظ المثال التالي:
الداله array_pop() :هذه الداله عكس الداله array_push وهي تقوم بحذف اخر عنصر في المصفوفه
مع ارجاعه, واعني بإرجاعه ان عند استخدام هذه الداله سوف تقوم بأعطائك اي
متغير تم حذفه, وهذا هو الفرق بينها, لاحظ المثال التالي:
استكشاف المصفوفات ( Navigation ) :في اي مصفوفه تقوم بإنشائها , يوجد لدينا مؤشر يقوم بالاشاره على العنصر
الموجود لديه الان, فتارة يكون المؤشر في العنصر الاول وتارة في العنصر
الثاني,, ولكن لا يمكننا التحكم في هذا المؤشر اساسا, بل يمكننا استخدام
بعض الدوال تساعدنا في التحكم به, فلو قمت بإنشاء داله الان ووضعت بها بعض
العناصر فسوف يكون المؤشر في اول عنصر في المصفوفه, لنرى الان بعض دوال
مؤشر المصفوفه لنقوم بإستخدامها في برامجنا لاحقا.
الداله current() :تستخدم هذه الداله لاعطائنا مكان المؤشر الحالي, وطريقة الاستخدام كالتالي, افتح محرر الاكواد وقم بكتابة الكود:
الداله each() :تقوم هذه الداله
بإرجاع العنصر الحالي ثم التقدم خطوه واحده الى الامام. each( $array )
الداله next() :تقوم هذه الداله بنفس عمل الداله each ولكن الفرق بينهما ان هذه الداله تقوم
بالتقدم خطوه واحده الى الامام ثم ارجاع المتغير الذي وصلت اليه. next( $array )
الداله reset() :عمل هذه الداله بسيط, وهي تقوم بإرجاع المتغير الى بداية المصفوفه, اي كأنك قمت بعمل المصفوفه من جديد. reset( $array )
الداله end() :هذه الداله عكس سابقتها reset حيث تقوم من اسمها بوضع المؤشر في اخر المصفوفه.
end( $array )
الداله prev() :واخيرتنا في هذا القسم هي هذه الداله وهي عكس الداله next وتقوم
بالرجوع للخلف خطوه واحده فقط ثم ارجاع المتغير الذي وصلت اليهتعداد المصفوفات ( Counting ) :الداله count() :تستخدم هذه الداله لعد عناصر المصفوفه الموجوده لدينا, وتستخدم بالطريقه التاليه:
الداله sizeof() :تقوم هذه الداله بنفس عمل الداله count تمام , ولا يوجد بينهما اي اختلاف. sizeof( $array )
الداله array_count_values() :هذه الداله جميله, ورهيبه , وعملها ان تقوم بعدد كم العناصر المتكرره في
المصفوفه, فلو لديك مصفوفه يوجد بها ( 1 , 5 , 1 , 6 , 2 ) فسوف تخبرك
الداله ان العدد 5 و 6 و 2 تكرر و مره واحده ولكن العدد 1 تكرر مرتان,
طريقة عمل هذه الداله ان تقوم بإدخال مصفوفه اليها وتقوم بإرجاع مصفوفه
حرفيه عناصرها هي عدد مرات التكرار والفهرس او المفاتيح هو عناصر المصفوفه
الاولى, لنقم بأخذ مثال بسيط عليها, افتح محرر الاكواد وقم بعمل التالي:
والناتج هو :
الداله array_walk :في بعض الاحيان نريد ان نقوم بتعديل جميع عناصر المصفوفه الموجوده لدينا
, من غير استخدام دالة تكرار وغير ذلك , ويمكننا تحقيق مبتغانا عن طريق
الداله array_walk ووضع اليها بعض من نكهات الدوال, لنقل ان لدينا مصفوفه
بها ارقام, ونريد ان نقوم بزيادة كل عنصر في المصفوفه بالعدد 1, كيف يمكننا
فعل ذلك , افتح محرر الاكواد وقم بكتابة التالي:
وسوف يكون ناتج هذه الطريقه هو التالي:
سؤال على الدرس :1 – لا يوجد
الـــدرس الــقادم :سوف نتعرف في الدرس القادم على متفرقات في لغة PHP مع بعض الامثله التطبيقية لتساعدنا على جمع كل ما تعلمناه الى الان