همراهان عزیز روکسو سلام! امروز با بحث جذاب و شیرین مرتب کردن آرایه ها در php با شما هستیم.
ما می توانیم اعضای یک آرایه را به چند روش مرتب کنیم:
بر همین اساس با توابع زیر آشنا خواهیم شد...
مثال اول: در مثال زیر اعضای آرایه ی 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>
مثال اول: کد زیر اعضای آرایه ی 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>
کد زیر بر اساس مقادیر آرایه ی متناظر موجود اعضای آن را به صورت صعودی مرتب می کند:
<!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 های آن و به صورت صعودی مرتب می کند:
<!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>
سوپرگلوبال ها متغیرهایی هستند که در PHP 4 معرفی شدند و همیشه در هر Scope ای قابل دسترسی هستند. این متغیرها از پیش در خود زبان PHP تعریف شده اند:
GLOBALS$
SERVER_$
REQUEST_$
POST_$
GET_$
FILES_$
ENV_$
COOKIE_$
SESSION_$
برخی از این سوپرگلوبال ها را در این جلسه توضیح می دهیم اما با بقیه ی آن ها در روند دوره آشنا خواهید شد.
این سوپرگلوبال برای دسترسی به متغیر های سراسری (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>
همانطور که می بینید از درون تابع به این متغیر دسترسی پیدا کرده ایم!
این سوپرگلوبال اطلاعاتی را در رابطه با 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 صفحه ی فعلی را برمیگرداند. |
این سوپرگلوبال برای دریافت اطلاعات پس از ثبت یک فرم مورد استفاده قرار می گیرد. در مثال زیر یک فرم می بینید؛ زمانی که کاربر روی دکمه ی ثبت (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>
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.