فرز المصفوفات
هناك العديد من الدوال التي يوفرها لنا الـPHP لفرز المصفوفات . نحن سنأخذ نظرة عن الخمسة دوال الأكثر استخداماً :


الدالة Sort()
هذه الدالة من أساسيات فرز المصفوفات وهي جداً أساسية وهي تقوم بأخذ محتويات المصفوفة ومن ثم تقوم بفرزها هجائياً اعتماداً على الأحرف الكبيرة أولا ثم الصغيرة .. تتطلب هذه الدالة اسم المصفوفة التي سيتم عليها الفرز


كود:
Sort (ArrayName);
إذا قمنا بإنشاء مصفوفة بالشكل التالى :
كود:
$NaNo=array (“ali”,“salem”,“hythem”,“Khaled”,“Ammar”,“Hesham”(;
فإذا أردنا فرزها عن طريق الدالة sort() فإننا نقوم باستخدامها كالتالى :
كود:
<?
$NaNo=array (“ali”,“salem”,“hythem”,“Khaled”,“Ammar”,“Hesham”(;
sort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo “<br> $e<br> $r”;
}
?>
لاحظ أنه عند تنفيذك للمثال ستجد أن الـPHP قام بالفرز اعتماداً على الأحرف الكبيرة أولاً ثم قام بالفرز بعدها اعتماداً على الأحرف الصغيرة .


الدالة Arsort()
هذه الدالة تعمل نفس عملية الدالة sort() ولكن هناك اختلاف بسيط فمثلاً لو كتبنا المصفوفه كالتالى :
كود:
$NaNo=array ( “ad”=>”ahmed”, “kh”=> “khaled”);
وأردنا فرزها وطباعة الفهارس والقيم كما في المثال التالى :
كود:
<?
$NaNo=array ( “ad”=>”ahmed”, “kh”=> “khaled”); 
sort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo “<br> $e<br> $r”;
}
?>
قارن ناتج المثال السابق مع هذا المثال :
كود:
<?
$NaNo=array ( “ad”=>”ahmed”, “kh”=> “khaled”); 
asort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo “<br> $e<br> $r”;
}
?>
اعتقد انك قد عرفت الفرق ففي المثال الاول قامت الدالة sort باستبدال الحروف بأرقام في الفهرسة أما في المثال الثاني فقد تم وضع الحروف كما هي وتم فرزها كما تفعل الدالة sort في الفرز .
باختصار لايوجد فرق بين sort و asort إلا في أن الدالة sort تستبدل فهرسة الحروف بأرقام .


الدالة Rsort() و arsort
تقوم بنفس عمل sort و asort ولكن بشكل عكسي جرب الأمثلة التالية :
مثال :
كود:
<?
$NaNo=array ( “ad”=>”ahmed”, “kh”=> “khaled”); 
rsort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo “<br> $e<br> $r”;
}
?>
مثال :
كود:
<?
$NaNo=array ( “ad”=>”ahmed”, “kh”=> “khaled”); 
arsort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo “<br> $e<br> $r”;
}
?>
ستجد أن الدالة rsort تقوم بنفس عملية الدالة sort ولكن بشكل عكسي
أيضاً الدالة arsort تقوم بنفس عملية asort ولكن بشكل عكسي .
يمكنك استعمال كل هذه الدوال في الفرز مع الحروف العربية ( إذا كان السيرفر يدعم اللغة العربية )
قم بتطبيق المثال التالى :
كود:
RSORT()
<?
$NaNo=array ( "ad"=>"سالم", "kh"=> "احمد"); 
rsort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo "<br> $e<br> $r";
}
?>
<br>--------<br>
ARSORT()
<?
$NaNo=array ( "ad"=>"احمد", "kh"=> "أحمد"); 
arsort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo "<br> $e<br> $r";
}
?>
<br>--------<br>
ASORT()
<?
$NaNo=array ( "ad"=>"هاشم", "kh"=> "جمال"); 
asort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo "<br> $e<br> $r";
}
?>
<br>--------<br>
SORT()
<?
$NaNo=array ( "ad"=>"هاشم", "kh"=> "جمال"); 
sort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo "<br> $e<br> $r";
}
?>
الدالة ksort
تكلمنا سابقاً عن طريقة فرز المصفوفات ولكن نريد أن نلفت نظرك أننا كنا نعتمد على العنصر في الفرز (element) ولكن هذه الدالة تقوم بالاعتماد على رقم الفهرسه في الفرز (index)
مثال : sort
كود:
<br>--------<br>
asort()
<?
$NaNo=array ( "ad"=>"هاشم", "kh"=> "جمال"); 
asort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo "<br> $e<br> $r";
}
?>
<br>--------<br>
ksort()
<?
$NaNo=array ( "ad"=>"هاشم", "kh"=> "جمال"); 
ksort($NaNo); 
While (list($e,$r) = each ($NaNo))
{
echo "<br> $e<br> $r";
}
?>
لقد اعتمد الـphp على index ولم يعتمد على الـelement في الفرز .