همراهان عزیز روکسو سلام! امروز با بحث جذاب و شیرین مرتب کردن آرایه ها در php با شما هستیم.
ما می توانیم اعضای یک آرایه را به چند روش مرتب کنیم:
- به ترتیب الفبا (انگلیسی)
- به ترتیب اعداد
- صعودی
- نزولی
بر همین اساس با توابع زیر آشنا خواهیم شد…
مرتب کردن صعودی با ()sort
مثال اول: در مثال زیر اعضای آرایه ی cars را بر اساس حروف الفبا و به صورت صعودی مرتب کرده ایم:
<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); sort($cars); $clength = count($cars); for($x = 0; $x < $clength; $x++) { echo $cars[$x]; echo "<br>"; } ?> </body> </html>
مثال دوم: کد زیر اعضای تابع numbers را بر اساس اعداد و به طور صعودی مرتب می کند:
<!DOCTYPE html> <html> <body> <?php $numbers = array(4, 6, 2, 22, 11); sort($numbers); $arrlength = count($numbers); for($x = 0; $x < $arrlength; $x++) { echo $numbers[$x]; echo "<br>"; } ?> </body> </html>
مرتب کردن نزولی با ()rsort
مثال اول: کد زیر اعضای آرایه ی cars را به صورت نزولی و بر اساس حروف الفبا مرتب می کند:
<!DOCTYPE html> <html> <body> <?php $cars = array("Volvo", "BMW", "Toyota"); rsort($cars); $clength = count($cars); for($x = 0; $x < $clength; $x++) { echo $cars[$x]; echo "<br>"; } ?> </body> </html>
مثال دوم: کد زیر اعضای آرایه ی numbers را بر اساس اعداد و به صورت نزولی مرتب می کند:
<!DOCTYPE html> <html> <body> <?php $numbers = array(4, 6, 2, 22, 11); rsort($numbers); $arrlength = count($numbers); for($x = 0; $x < $arrlength; $x++) { echo $numbers[$x]; echo "<br>"; } ?> </body> </html>
مرتب کردن صعودی/نزولی بر اساس مقدار با ()asort
کد زیر بر اساس مقادیر آرایه ی متناظر موجود اعضای آن را به صورت صعودی مرتب می کند:
<!DOCTYPE html> <html> <body> <?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>"; } ?> </body> </html>
اگر بخواهیم این مثال را به صورت نزولی مرتب کنیم از تابع ()arsort استفاده می کنیم:
<!DOCTYPE html> <html> <body> <?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>"; } ?> </body> </html>
مرتب کردن صعودی/نزولی بر اساس key با تابع ksort
کد زیر آرایه ی متناظر را بر اساس key های آن و به صورت صعودی مرتب می کند:
<!DOCTYPE html> <html> <body> <?php $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"); ksort($age); foreach($age as $x => $x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?> </body> </html>
حالا اگر بخواهیم این کار را به صورت نزولی انجام دهد از تابع ()krsort استفاده می کنیم:
<!DOCTYPE html> <html> <body> <?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>"; } ?> </body> </html>
SuperGlobal ها در زبان PHP
سوپرگلوبال ها متغیرهایی هستند که در PHP 4 معرفی شدند و همیشه در هر Scope ای قابل دسترسی هستند. این متغیرها از پیش در خود زبان PHP تعریف شده اند:
GLOBALS$
SERVER_$
REQUEST_$
POST_$
GET_$
FILES_$
ENV_$
COOKIE_$
SESSION_$
برخی از این سوپرگلوبال ها را در این جلسه توضیح می دهیم اما با بقیه ی آن ها در روند دوره آشنا خواهید شد.
سوپرگلوبال GLOBALS$
این سوپرگلوبال برای دسترسی به متغیر های سراسری (global) استفاده می شود. شما می توانید از طریق این سوپرگلوبال در هر جایی و درون هر تابع یا متدی که خواستید به متغیرهای سراسری دسترسی داشته باشید. نحوه ی کار آن به شکل [GLOBALS[index
است به طوری که index همان نام متغیر سراسری خواهد بود. به مثال زیر توجه کنید:
<!DOCTYPE html> <html> <body> <?php $x = 75; $y = 25; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z; ?> </body> </html>
همانطور که می بینید از درون تابع به این متغیر دسترسی پیدا کرده ایم!
سوپرگلوبال SERVER_$
این سوپرگلوبال اطلاعاتی را در رابطه با header ها، مسیر ها و مکان اسکریپت ها در خود نگهداری می کند. چند مورد از استفاده های آن را در مثال زیر برایتان آورده ایم:
<!DOCTYPE html> <html> <body> <?php echo $_SERVER['PHP_SELF']; echo "<br>"; echo $_SERVER['SERVER_NAME']; echo "<br>"; echo $_SERVER['HTTP_HOST']; echo "<br>"; echo $_SERVER['HTTP_REFERER']; echo "<br>"; echo $_SERVER['HTTP_USER_AGENT']; echo "<br>"; echo $_SERVER['SCRIPT_NAME']; ?> </body> </html>
در جدول زیر لیستی از ورودی های SERVER_$ را مشاهده می کنید:
ورودی | توضیح |
---|---|
$_SERVER[‘PHP_SELF’] | نام فایل یا اسکریپت فعلی را برمیگرداند. |
$_SERVER[‘GATEWAY_INTERFACE’] | نسخه ی CGI مورد استفاده را برمیگرداند. |
$_SERVER[‘SERVER_ADDR’] | آدرس IP میزبان را برمیگرداند. |
$_SERVER[‘SERVER_NAME’] | نام سرور میزبان را برمیگرداند. (مثلا www.roxo.ir) |
$_SERVER[‘SERVER_SOFTWARE’] | اطلاعات سرور را برمیگرداند. (مانند Apache/2.2.24) |
$_SERVER[‘SERVER_PROTOCOL’] | نام پروتکل و اطلاعاتی راجع به آن را برمیگرداند. (مانند HTTP/1.1) |
$_SERVER[‘REQUEST_METHOD’] | متد درخواست را برمیگرداند. (مانند POST) |
$_SERVER[‘REQUEST_TIME’] | timestamp زمان شروع درخواست را برمیگرداند. |
$_SERVER[‘QUERY_STRING’] | در صورت وجود رشته ی کوئری آن را برمیگرداند. |
$_SERVER[‘HTTP_ACCEPT’] | Accept header مربوط به درخواست فعلی را برمیگرداند. |
$_SERVER[‘HTTP_ACCEPT_CHARSET’] | Accept_Charset headerدرخواست فعلی را برمیگرداند (مانند utf-8,ISO-8859-1) |
$_SERVER[‘HTTP_HOST’] | Host header درخواست فعلی را برمیگرداند. |
$_SERVER[‘HTTP_REFERER’] | URL کامل آدرس فعلی را برمیگرداند (همیشه پشتیبانی نمی شود و قابل اعتماد نیست) |
$_SERVER[‘HTTPS’] | آیا HTTP امن است یا خیر؟ |
$_SERVER[‘REMOTE_ADDR’] | آدرس IP که کاربر از طریق آن متصل شده است را نشان می دهد. |
$_SERVER[‘REMOTE_HOST’] | نام میزبان که کاربر از طریق آن متصل شده است را نشان می دهد. |
$_SERVER[‘REMOTE_PORT’] | پورت استفاده شده در کامپیوتر کاربر برای اتصال به سایت را نشان می دهد. |
$_SERVER[‘SCRIPT_FILENAME’] | آدرس مطلق (absolute) اسکریپت فعلی را برمیگرداند. |
$_SERVER[‘SERVER_ADMIN’] | مقدار داده شده به SERVER_ADMIN در فایل پیکربندی سرور را برمیگرداند. |
$_SERVER[‘SERVER_PORT’] | پورت استفاده شده در سرور ما را برمیگرداند. |
$_SERVER[‘SERVER_SIGNATURE’] | نسخه ی سرور و میزبان مجازی را برمیگرداند. |
$_SERVER[‘PATH_TRANSLATED’] | آدرس اسکریپت فعلی را بر اساس آدرس سیستم برمیگرداند. |
$_SERVER[‘SCRIPT_NAME’] | آدرس اسکریپت فعلی را برمیگرداند. |
$_SERVER[‘SCRIPT_URI’] | آدرس URI صفحه ی فعلی را برمیگرداند. |
سوپرگلوبال REQUEST_$
این سوپرگلوبال برای دریافت اطلاعات پس از ثبت یک فرم مورد استفاده قرار می گیرد. در مثال زیر یک فرم می بینید؛ زمانی که کاربر روی دکمه ی ثبت (Submit) کلیک کند، فرم به action مشخص شده ارسال می شود (به صورت attribute در تگ <form> مشخص شده است). در مثال زیر action را همین فایل فرم قرار داده ایم. یعنی همین فایلی که فرم در آن قرار دارد، اطلاعات فرم را پردازش کند. شما می توانید فایل خودتان را مشخص کنید.
<!DOCTYPE html> <html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { // collect value of input field $name = htmlspecialchars($_REQUEST['fname']); if (empty($name)) { echo "Name is empty"; } else { echo $name; } } ?> </body> </html>
همانطور که می بینید در مثال بالا از متد POST استفاده شده است اما روش دریافت آن آنقدرها مرسوم نیست. روش بهتر برای دریافت نام کاربر به صورت زیر است:
<!DOCTYPE html> <html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { // collect value of input field $name = $_POST['fname']; if (empty($name)) { echo "Name is empty"; } else { echo $name; } } ?> </body> </html>
بله مستقیما از POST_$ استفاده کرده ایم اما اگر متدها به صورت GET بود چطور؟ آنگاه می توانیم از GET_$ استفاده کنیم!
GET_$ برای دریافت فرم هایی با متد GET استفاده می شود اما می توان با استفاده از آن هر اطلاعاتی که به صورت پارامتر به URL ارسال شود را نیز دریافت کرد. به مثال زیر توجه کنید:
<!DOCTYPE html> <html> <body> <a href="test_get.php?subject=PHP&web=W3schools.com">Test $GET</a> </body> </html>