[دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات
بسم الله الرحمن الرحيم
http://upload.wikimedia.org/wikipedi...%D8%B1_PHP.png
السلام عليكم ,, نعود اليوم اليكم بدرس جديد استكمالا لدورة الـ php التي كنا قد وصلنا بدراستها الى موضوع المصفوفات و قد تحدثنا في الدرسين السابقين عن المصفوفات و انواعها الرقمية و الحرفية اي المركبة و المصفوفات المتعددة الأبعاد و كيفية تعريف هذه الأنواع و بإمكانكم الإطلاع على دروس الدورة عبر الفهرس التالي :
اما في درس اليوم سوف نتحدث دوال المصفوفات و هي من اهم الأشياء التي يجب ان يعرف مبرمج ال php التعامل معها لأنها سوف تريح المبرمج من برمجة اضافات كثيره لمشروعه و من هذه الدوال ,, دوال ترتيب المصفوفات بأنواعها و دوال الترتيب العكسي للمصفوفات بأنواعها و ايضا سوف نتعرف على دوال استكشاف المصفوفات ,, و ستلاحظ ان الدوال كثيرة لكن الأهم من حفظها هو فهمها و فهم عملها و الآن لنبدأ على بركة الله ....
اولا : ترتيب المصفوفات الطبيعي
قبل ان نبدأ بدوال ترتيب المصفوفات يجب ان لا نستهين بهذه الدوال رغم بساطتها لأنها مفيدة جدا للمبرمجين فمثلا في كثير من المواقع تجد ان هناك خيار للبحث و بجانب هذا الخيار سوف تجد انه يوجد خيارات للترتيب حسب الأسم , العمر , الرقم , .... الخ , وهذه الدوال هي التي تكفل القيام بإخراج نتائج البحث بهذه الصورة .
والآن لنبدأ ...
1 - دالة ترتيب المصفوفات العامة ()sort
تستخدم هذه الدالة للترتيب حسب الأسبقية اي تصاعديا اي انه
في حالة الأرقام فإن الترتيب يكون من الصفر 0 و صعودا الى اكبر رقم
و في حالة الأحرف العربية من حرف (أ) و وصولا الى حرف (ي)
و في حالة الأحرف الإنجليزية من حرف (A) الى حرف (Z)
و يجب ان نعلم ان هذه الدالة حساسة لحالة الأحرف في اللغة الإنجليزية فمثلا اصغر حرف في اللغة الإنجليزية هو A و الأكبر هو B و هكذا وصولا الى Z و عند الوصول الى Z كابيتل يعتبر اصغر من a و هكذا وصولا الى z
و الصيغة العامة لهذه الدالة هي كالتالي :
كود PHP:
<?php
$arr = array(---elements---);
sort($arr);
?>
لاحظ ان هذه الداله لها باراميتر واحد يتم تمريره لها و هو المصفوفه التي نريد ترتيب عناصرها
والآن لاحظ هذا المثال الشامل الذي يشمل كل كل الكلام السابق :
كود PHP:
<?php
#################################
# sorting array of numbers
$arr1 = array(2,4,3,1,5);
sort($arr1);
foreach($arr1 as $key=>$value){
echo $value."<br/>";
}
echo "--------<br/>";
#################################
# sorting array of letters
$arr2 = array('a','A','B','b');
sort($arr2);
foreach($arr2 as $key=>$value){
echo $value."<br/>";
}
echo "--------<br/>";
?>
و في هذا المثال قمنا بتعريف مصفوفة رقمية ثم قمنا بترتيبها بإستخدام الدالة ()sort ثم قمنا بطباعتها و هكذا بالنسبة للمصفوفة الثانية فهي مصفوفة حرفية و قمنا بترتيبها بنفس الطريقة و بإمكانك مشاهدة نتيجة تنفيذ هذا الكود عبر الرابط التالي :
http://www.al79n-php.info/less15/arr1.php
2 - الدالتين ()asort و ()ksort
تستخدم هذه الدوال في حالة المصفوفات المركبة بحيث اننا احيانا نحتاج الى الترتيب حسب العنصر و في هذه الحالة نستخدم ()asort و احيانا اخرى نحتاج الى ترتيب المصفوفة حسب الفهرس او المفاتيح و في هذه الحالة نستخدم ()ksort
لاحظ المثال التالي :
كود PHP:
<?php
####################################################
# sorting an array by values using asort() function
$arr1 = array( 'A'=>3 , 'a'=>1 , 'B'=>2 , 'c'=>4);
asort($arr1);
foreach($arr1 as $key=>$value){
echo $key."=>".$value."<br/>";
}
echo "--------<br/>";
####################################################
# sorting an array by indexs (keys) using ksort() function
$arr2 = array( 'A'=>3 , 'a'=>1 , 'B'=>2 , 'c'=>4);
ksort($arr2);
foreach($arr2 as $key=>$value){
echo $key."=>".$value."<br/>";
}
?>
في هذا المثال قمنا بتعريف مصفوفة مركبة مفاتيحها (الفهرس) عبارة عن حروف مختلفة و منوعة (حروف كبيرة و صغيرة) و القيم لها هي عبارة عن ارقام عشوائية غير مرتبة ثم قمنا بإستخدام الدالة ()asort لترتيب المصفوفة و ثم طباعتها و هنا سوف تلاحظ انه تم ترتيب المصفوفة بناء على القيم و بغض النظر عن المفتاح
و ثم قمنا بتعريف مصفوفة ثانية و لها نفس القيم في المصفوفة الأولى و لكن قمنا بإستخدام الدالة ()ksort لترتيب المصفوفة و ثم طباعتها و هنا ستلاحظ انه تم ترتيب المصفوفة بناء على المفاتيح (الحروف) و بغض النظر عن القيم
و بإمكانك مشاهدة نتائج تنفيذ هذا الكود و مقارنته من خلال الرابط التالي :
http://www.al79n-php.info/less15/arr2.php
ثانيا : دوال الترتيب العكسي للمصفوفات
رأينا في الجزء السابق ان الدوال ()asort و ()ksort تقوم بالترتيب التصاعدي اي من الأصغر الى الأكبر و في هذا الجزء لدينا نفس الدوال لكن بإضافة حرف r لهما سيصبح عملهم عكسي اي ترتيب عناصر المصفوفة تنازليا اي من الأكبر الى الأصغر و هذه الدوال هي ()arsort و ()krsort و عملهم نفس عمل الدوال السابقة لكن الترتيب يكون عكسي لاحظ المثال التالي :
كود PHP:
<?php
####################################################
# sorting an array by values using arsort() function
$arr1 = array( 'A'=>3 , 'a'=>1 , 'B'=>2 , 'c'=>4);
arsort($arr1);
foreach($arr1 as $key=>$value){
echo $key."=>".$value."<br/>";
}
echo "--------<br/>";
####################################################
# sorting an array by indexs (keys) using krsort() function
$arr2 = array( 'A'=>3 , 'a'=>1 , 'B'=>2 , 'c'=>4);
krsort($arr2);
foreach($arr2 as $key=>$value){
echo $key."=>".$value."<br/>";
}
?>
و بإمكانكم تتبع البرنامج و مشاهدة ناتج التنفيذ عبر الرابط التالي :
http://www.al79n-php.info/less15/arr3.php
ثالثا : اعادة ترتيب المصفوفات Reordering
في بعض برامجنا نحتاج الى اعادة ترتيب المصفوفات بشكل معين او بطريقة معينة و في هذا الجزء سنتعرف على بعض الدوال التي تقوم بهذه الوظائف ....
1 - الدالة ()shuffle
وظيفة هذه الدالة انها تقوم بترتيب عناصر المصفوفة بشكل عشوائي في كل مرة يتم تشغيل البرنامج فيها و كمثال عليها تطبيقات الفيسبوك مثل اعرف مزاجك و ....
و مثال عليها :
كود PHP:
<?php
$arr = array('happy' , 'sad' , 'angry');
shuffle($arr);
foreach($arr as $key=>$value){
echo $value."<br/>";
}
?>
و عند تشغيلك للرابط التالي و اعادة تحميل الصفحة اكثر من مرة سوف تلاحظ بأن النتائج تختلف :
http://www.al79n-php.info/less15/arr4.php
2 - الدالة ()array_reverse
تقوم هذه الدالة بإنشاء دالة جديدة تحمل نفس عناصر المصفوفة الممرره لها لكن بترتيب عكسي (لاحظ انها ترجع النتيجة في مصفوفة جديدة)
لاحظ المثال التالي :
كود PHP:
<?php
$old_array = array('a','b','c','d');
$new_array = array_reverse($old_array);
foreach($new_array as $key=>$value){
echo $value."<br/>";
}
?>
لاحظ هنا اننا قمنا بتحريف مصفوفة تحتوي الحروف a , b , c , d
ثم قمنا بتعريف مصفوفة جديدة و جعلنا النتائج التي ترجع من الدالة هي التي تخزن في هذه المصفوفة و قمنا بطباعة عناصر هذه المصفوفة الجديدة و سوف تلاحظ انه الحروف طبعت عكسية و هذه هي وظيفة الدالة و بإمكانكم مشاهدة الناتج عبر الرابط التالي :
http://www.al79n-php.info/less15/arr5.php
3 - الدالة ()array_push
و تستخدم هذه الدالة لإضافة عنصر الى المصفوفة
لاحظ المثال التالي :
كود PHP:
<?php
$arr = array('a','b','c','d');
array_push($arr,'e');
foreach($arr as $key=>$value){
echo $value."<br/>";
}
?>
لاحظ هنا ان هذه الدالة تأخذ معاملين الأول هو اسم المصفوفة التي نريد الإضافة لها و هي هنا arr$ و المعامل الثاني هو العنصر الذي نريد اضافته و هنا نحن اضفنا حرف e الى عناصر المصفوفة الأصلية
و بإمكانك الإطلاع على الناتج عبر الرابط التالي :
http://www.al79n-php.info/less15/arr6.php
4 - الدالة ()array_pop
هذه الدالة هي عكس الدالة السابقة ()array_push و وظيفتها حذف اخر عنصر في المصفوفة و ارجاعه الى متغير
لاحظ المثال التالي :
كود PHP:
<?php
$arr = array('a','b','c','d');
array_push($arr,'e');
echo "array after add 'e' :<br/>";
foreach($arr as $key=>$value){
echo $value."<br/>";
}
echo "<br/>";
$deleted = array_pop($arr);
echo "array after delete 'e' :<br/>";
foreach($arr as $key=>$value){
echo $value."<br/>";
}
echo "<br/>deleted element is : ".$deleted;
?>
و ايضا بإمكانكم مشاهدة ناتج تنفيذ هذا الكود على الرابط التالي :
http://www.al79n-php.info/less15/arr7.php
الى هنا نكتفي اخوتي الكرام لأن الخوض في دوال ال php موضوع لن ينتهي حتى لو كتبنا مجلدات :cry2: لأنها اكثر لغة برمجة تدعمنا بالدوال لهذا نكتفي بهذه الدوال و في حال مرور دالة جديدة علينا من خلال امثلة الدروس القادمة سنقوم بشرحها و الى اللقاء في الدرس القادم ....
:SnipeR (9):
رد: [دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات
رد: [دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات
يسلمو ديــــــــــــــادتك :SnipeR (9):
رد: [دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات
وسام و دانا منورين والله و ربي يسلمكم :)