در این آموزش می خواهیم با هم تمام توابع مربوط به مرتب سازی آرایه ها در php را بررسی کنیم. اگر هنوز با آرایه ها در php آشنا نیستید، از آموزش رایگان php سایت ما برای یادگیری این بخش استفاده کنید.
مرتب سازی یک آرایه به صورت صعودی با تابع sort()
همانطور که در مثال زیر می بینید، با استفاده از تابع sort می توانیم اعضای یک آرایه را به صورت صعودی مرتب کنیم. اگر اعضای آرایه متنی بودند بر اساس حروف الفبا مرتب می شوند و اگر عددی بودند
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);
print_r($cars);
?>
مرتب سازی یک آرایه به صورت نزولی با تابع rsort()
این تابع مشابه تابع sort عمل می کند با این تفاوت که مرتب سازی در اینجا به صورت نزولی یعنی از بزرگ به کوچک است.
<?php
$cars=array("Volvo","BMW","Toyota");
rsort($cars);
print_r($cars);
?>
مرتب سازی یک آرایه انجمنی بر اساس مقادیر آن و به صورت صعودی با تابع asort()
دو تابع پیش مربوط به آرایه های عادی بودند. 4 تابع بعد برای مرتب سازی آرایه های انجمنی هستند. آرایه هایی که هم کلید دارند و هم مقدار. تابع asort فقط مقادیر آرایه را به صورت صعودی (یعنی از کوچک به بزرگ) مرتب می کند.
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
asort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
مرتب سازی یک آرایه انجمنی بر اساس مقادیر آن و به صورت نزولی با تابع arsort()
این تابع مانند تابع قبل عمل می کند با این تفاوت که مقادیر را به صورت نزولی یعنی از بزرگ به کوچک مرتب می کند.
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
arsort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
مرتب سازی یک آرایه انجمنی بر اساس کلید های آن و به صورت صعودی با تابع ksort()
این آرایه نیز برای مرتب سازی آرایه های انجمنی استفاده می شود با این تفاوت که به جای مقادیر، کلید های آرایه را مرتب می کند. به صورت صعودی یعنی از کوچک به بزرگ.
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
asort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
مرتب سازی یک آرایه انجمنی بر اساس کلید های آن و به صورت نزولی با تابع krsort()
این تابع نیز مانند تابع قبل کلید های آرایه ی انجمنی را مرتب می کند ولی اینبار به صورت نزولی.
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
krsort($age);
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
مرتب سازی یک آرایه بر اساس یک تابع دلخواه با تابع usort()
توابع قبل اعضای آرایه را بر اساس مرتب سازی عددی یا بر اساس حروف الفبا به ترتیب مرتب می کردند. اگر بخواهیم طریقه ی مرتب سازی را به دلخواه خود به آرایه اعمال کنیم می توانیم از این تابع استفاده کنیم. این تابع در پارامتر اول خود یک آرایه دریافت می کند و در پارامتر دوم یک تابع. که در آن تابع روش مرتب سازی مشخص شده است. این تابع توسط برنامه نویس باید نوشته شود. دو پارامتر دارد و نحوه ی مرتب سازی دو عضو پشت سر هم با این دو پارامتر مشخص می شود. تابع زیر یک تابع مرتب سازی صعودی عادی است. همانطور که در تابع می بینید، اگر دو پارامتر با هم برابر باشند، عدد صفر، اگر پارامتر اول کمتر از پارامتر دوم باشد عدد 1- و اگر پارامتر اول بیشتر از پارامتر دوم باشد عدد 1 برگردانده می شود. و با این سه عدد نحوه ی مرتب سازی همه ی اعضای آرایه تشخیص داده می شود.
عدد صفر یعنی دو پارامتر در کنار هم قرار بگیرند. عدد 1- یعنی پارامتر اول قبل از پارامتر دوم بیاید و عدد 1 یعنی پارامتر اول بعد از پارامتر دوم قرار بگیرد.
<?php
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$a=array(4,2,8,6);
usort($a,"my_sort");
print_r($a);
?>
مرتب سازی مقادیر یک آرایه انجمنی بر اساس یک تابع دلخواه با تابع uasort()
این تابع نیز مانند تابع قبل عمل می کند با این تفاوت که برای آرایه های انجمنی و روی مقادیر آرایه اعمال می شود.
<?php
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$arr=array("a"=>4,"b"=>2,"c"=>8,"d"=>6);
uasort($arr,"my_sort");
print_r($arr);
?>
مرتب سازی کلید های یک آرایه انجمنی براساس یک تابع دلخواه با تابع uksort()
این تابع نیز مانند تابع قبل عمل می کند با این تفاوت که روی کلید های آرایه آرایه ی انجمنی اعمال می شود.
<?php
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$arr=array("a"=>4,"b"=>2,"c"=>8,"d"=>6);
uksort($arr,"my_sort");
print_r($arr);
?>
مرتب سازی مقادیر آرایه براساس الگوریتم طبیعی با تابع natcasesort()
این تابع مانند تابع اول لیست، اعضای آرایه را مرتب می کند با این تفاوت که از الگوریتم شمارش طبیعی استفاده می کند. در حالت عادی در مورد اعضایی از آرایه که با حروف یکسانی شروع می شوند و سپس انتهای آنها عدد قرار می گیرد، برای مثال temp12 و temp2، مرتب سازی بر اساس الگوریتم کامپیوتری انجام می شود و یکی یکی حروف و اعداد با هم مقایسه می شوند و در نتیجه در مرتب سازی صعودی کلمه ی temp12 قبل از temp2 قرار می گیرد با اینکه در حالت طبیعی عدد 12 بیشتر از 2 است اما چون عدد 1 کمتر از 2 است مرتب سازی به این شکل انجام می شود. اگر بخواهیم اعدادِ چسبیده به کلمات به صورت عددی و طبیعی مرتب شوند از تابع natcasesort استفاده می کنیم. این تابع بع حروف کوچک و بزرگ حساس نیست.
<?php
$temp_files = array("temp15.txt","Temp10.txt",
"temp1.txt","Temp22.txt","temp2.txt");
natsort($temp_files);
echo "Natural order: ";
print_r($temp_files);
echo "<br />";
natcasesort($temp_files);
echo "Natural order case insensitve: ";
print_r($temp_files);
?>
مرتب سازی مقادیر آرایه براساس الگوریتم طبیعی و حساس به کوچک و بزرگی حروف با تابع natsort()
این تابع مانند تابع قبل عمل می کند با این تفاوت که به حروف کوچک و بزرگ نیز حساس است.
<?php
$temp_files = array("temp15.txt","temp10.txt",
"temp1.txt","temp22.txt","temp2.txt");
sort($temp_files);
echo "Standard sorting: ";
print_r($temp_files);
echo "<br>";
natsort($temp_files);
echo "Natural order: ";
print_r($temp_files);
?>
مرتب سازی چند آرایه به صورت همزمان با تابع array_multisort()
برای مرتب سازی چند آرایه به صورت همزمان و یا مرتب سازی یک آرایه ی چند بعدی از این تابع استفاده می کنیم.
<?php
$a1=array("Dog","Cat");
$a2=array("Fido","Missy");
array_multisort($a1,$a2);
print_r($a1);
print_r($a2);
?>
دیدگاهها