عملگرها (Operators) در PHP

مانند بسیاری از زبان های برنامه نویسی، PHP نیز از قوانین و عملگرهای خاصی جهت محاسبه، مقایسه مقادیر و استدلال منطقی استفاده می کند، در بحث پیشین از بخش آموزش های مقدماتی دیدیم که چگونه می توان متغیرها را تعریف و مقادیر آنها را تغییر داد، همچنین گفتیم که مقادیر متغیر می تواند هر نوع داده ای باشد که در کدنویسی برنامه مورد نیاز است (Int، String، Array، Boolean و...) که در PHP مقدار متغیر نوع آن را مشخص می کند، به طور مثال اگر متغیری مقدار عددی داشته باشد نوع آن متغیر نیز به صورت خودکار عدد (Int) در نظر گرفته می شود، به هر صورت در این مطلب می خواهیم ببینیم مفسر PHP چگونه با مقادیر متغیرها محاسبه و آنها را با هم مقایسه می کند، همچنین نگاهی خواهیم داشت به عملگرهای منطقی که جز عملگرهای پرکاربرد در زبان های برنامه نویسی و از جمله PHP هستند.
عملگرهای محاسبه (Arithmetic Operators) در PHP
در PHP با استفاده از علائمی که در ادامه خواهیم دید محاسبات ریاضی را انجام می دهیم، منظور از محاسبات ریاضی عمل جمع، تفریق، ضرب، تقسیم، باقیمانده بخش پذیری و به توان رساندن است که هر کدام از این موارد با یک علامت بخصوص به شرح زیر مشخص می شوند.
برای عمل جمع در PHP از علامت + استفاده می کنیم، به طور مثال:
$a = 5;
$b = 8;
$addition = $a + $b;
در مثال بالا دو متغیر فرضی a و b را با هم جمع کرده ایم که حاصل مقدار 13 خواهد شد (در صورت نیاز برای چاپ خروجی از دستور echo استفاده می کنیم)، همان طور که مشخص است نوع متغیرها به صورت عدد یا Int هستند، اگر یکی از متغیرها از نوع دیگری باشد عمل جمع ممکن است با خطا مواجه شود (اگر مقدار متغیر صرفا یک عدد بوده حتی اگر بین علامت های ' ' و " " باشد، مفسر PHP به صورت خودکار نوع آن را به Int تبدیل کرده و اشکالی در محاسبه بروز نمی کند، اما اگر مقدار متغیر علاوه بر عدد به همراه رشته متنی باشد، محاسبه دچار اشکال خواهد شد)، همین رویه در مورد علامت های دیگر مربوط به محاسبه در PHP صدق می کند.برای عمل تفریق در PHP از علامت - استفاده می کنیم:
$a = 5;
$b = 8;
$subtraction = $b - $a;
حاصل مثال بالا مقدار 3 خواهد بود. برای عمل ضرب در PHP از علامت * استفاده می کنیم:
$a = 5;
$b = 8;
$multiplication = $a * $b;
حاصل مثال بالا مقدار 45 خواهد بود.برای عمل تقسیم در PHP از علامت / استفاده می کنیم:
$a = 5;
$b = 8;
$division = $b / $a;
حاصل مثال بالا به صورت اعشاری و مقدار 1.6 خواهد بود.برای بدست آوردن باقیمانده بخش پذیری در PHP از علامت % استفاده می کنیم:
$a = 5;
$b = 8;
$modulus = $b % $a;
حاصل مثال بالا مقدار 3 خواهد بود، چرا که 8 تنها یک بار بر 5 بخش پذیر است (یعنی یک 5 تایی در 8 قابل گنجاندن است) و باقیمانده عدد 3 خواهد بود.و در نهایت برای به توان رساندن در PHP نیز از علامت ** استفاده می کنیم (این قابلیت در نسخه 5.6 و به بعد در دسترس است):
$a = 5;
$b = 8;
$exponentiation = $a ** $b;
که حاصل برابر با مقدار 390625 خواهد بود.نکته: فراموش نکنیم که برای گرفتن خروجی در PHP باید از دستور print یا echo استفاده کنیم، در غیر این صورت هیچ مقداری در خروجی چاپ نخواهد شد.
<?php
$a = 5;
$b = 8;
$addition = $a + $b;
echo $addition;
print $addition;
?>
عملگر افزایش و کاهش (Increment/Decrement Operators) در PHP
معمولا در هنگام کدنویسی برنامه ها مواردی پیش می آید که نیاز به افزایش یا کاهش مقدار یک متغیر به میزان یک واحد است، اگرچه در حالت عادی می توانیم این کار را با عملگر جمع یا تفریق انجام دهیم اما برنامه نویسان همیشه به دنبال ساده ترین و در عین حال سریعترین روش ها هستند! از این رو به جهت پرکاربرد بودن این دو عملیات در اغلب زبان های برنامه نویسی عملگرهای جداگانه بدین منظور در نظر گرفته شده است که PHP نیز از این قاعده مستثنا نیست، بر این اساس دو علمگر ++ برای افزایش به میزان یک واحد و عملگر -- جهت کاهش به میزان یک واحد برای این هدف استفاده می شوند، مثال:
$a = 5;
$a++;
$b = 5;
$b--;
دقت کنیم محل قرارگیری علامت ++ و -- در قبل یا بعد از متغیر دارای اهمیت است، اگر علامت قبل از متغیر قرار گیرد، ابتدا مقدار یک واحد افزایش یا کاهش می یابد و سپس مقادیر جدید به اصطلاح برگردانده می شود که به آن Pre Increment/Decrement گفته می شود (Pre به معنی پیش، Increment افزایش و Decrement کاهش)، اما اگر علامت بعد از متغیر قرار گیرد، ابتدا مقادیر برگردانده شده و سپس مقدار یک واحد افزایش یا کاهش می یابد که به آن Post Increment/Decrement گفته می شود (Post به معنی ارسال یا در اصطلاح برنامه نویسی برگرداندن)، مثال:<?php
$a = 5;
echo $a++;
echo '<br>';
$b = 5;
echo $b--;
echo '<br>';
$a = 5;
echo ++$a;
echo '<br>';
$b = 5;
echo --$b;
?>
که نتیجه به صورت زیر خواهد بود.5
5
6
4
در دو حالت اول ابتدا مقدار متغیر چاپ شده و سپس عملگر افزایش یا کاهش اعمال می شود، اما در دو حالت دوم ابتدا عملگر افزایش یا کاهش اعمال شده و سپس متغیر در خروجی چاپ می شود.عملگرهای اختصاص دهنده (Assignment Operators) در PHP
در مباحث پیشین گفتیم که برای اختصاص یک مقدار به متغیر از علامت = در PHP استفاده می شود، علامت مساوی را در اصطلاح Assignment Operator یا علامت اختصاص دهنده می گویند، در ادامه خواهیم دید که می توانیم عملگرهای محاسبه و مساوی را با هم ترکیب نموده و عمل محاسبه و اختصاص را به صورت مختصر نویسی انجام دهیم، شیوه مختصرنویسی جهت خواناتر شدن سورس ها و پرهیز از نوشتن کدهای اضافه در برنامه نویسی مورد نیاز است.
علامت =+ معادل عملگر + (جمع) و عملگر = (اختصاص) است، با ترکیب این دو علامت می توانیم ابتدا متغیر را با مقادیر مورد نظر جمع کرده و سپس مقدار جدید را به آن اختصاص دهیم، مثال:
//شیوه عادی
$a = $a + 5;
//شیوه مختصرنویسی
$a += 5;
در صورتی که با دستور echo از متغیر a خروجی بگیریم، با فرض اینکه مقدار اولیه آن برابر با 1 باشد، پس از اعمال عملگر ترکیبی =+ مقدار نهایی برابر با 6 خواهد شد، یادآور می شویم که در نتیجه هیچ تفاوتی بین دو شیوه وجود ندارد، صرفا به جهت خوانا و مختصرنویسی کدها است که استفاده از شیوه ترکیبی در موارد نیاز توصیه می شود.نکته: علامت + و سایر عملگرهای محاسباتی در شیوه مختصرنویسی باید الزاما قبل از علامت = قرار گیرند، در غیر این صورت عملگر ترکیبی به صورت مورد نظر نتیجه نخواهد داد.
علامت =- معادل عملگر - (تفریق) و عملگر = (اختصاص) است، مثال:
//شیوه عادی
$a = $a - 5;
//شیوه مختصرنویسی
$a -= 5;
علامت =* معادل عملگر * (ضرب) و عملگر = (اختصاص) است، مثال://شیوه عادی
$a = $a * 5;
//شیوه مختصرنویسی
$a *= 5;
علامت =/ معادل عملگر / (تقسیم) و عملگر = (اختصاص) است، مثال://شیوه عادی
$a = $a / 5;
//شیوه مختصرنویسی
$a /= 5;
علامت =% معادل عملگر % (باقیمانده بخش پذیری) و عملگر = (اختصاص) است، مثال://شیوه عادی
$a = $a % 5;
//شیوه مختصرنویسی
$a %= 5;
نکته: برای مقداردهی به متغیرهای رشته ای از علامت ترکیبی =. (Concatenation Assignment) استفاده می شود، PHP بر خلاف JavaScript برای رشته متنی و عدد دو علامت ترکیبی مجزا دارد (در جاوا اسکریپت از علامت =+ هم برای رشته و هم عدد می توانیم استفاده کنیم اما در PHP علامت =+ برای متغیرهای عددی و علامت =. برای متغیرهای رشته ای به کار می رود)، مثال://شیوه عادی
$a = $a . 'String';
//شیوه مختصرنویسی
$a .= 'String';
عملگرهای مقایسه (Comparison Operators) در PHP
حال که با علائم محاسباتی و اختصاص دهنده در PHP آشنا شدیم نوبت به فراگیری اصول مقایسه ای است، اما اساسا مقایسه در برنامه نویسی چه فایده ای دارد؟! برای اینکه درک کلی و روشنی از مقایسه و فایده آن در PHP داشته باشیم آموزش را با مثالی ادامه می دهیم، فرض کنیم تعدادی از کاربران وبسایتمان عضو کشوری خاص هستند (اطلاعات آنها در پایگاه داده سایت موجود است)، حال می خواهیم به مفسر PHP بگوییم که اگر کشور کاربر برابر آن عبارت بود امکانات خاصی را برای او نمایش دهد یا زبان سایت را متناسب با زبان کشور او تنظیم نماید، امکان این کار تنها در صورت مقایسه کشور کاربر با عبارتی که مد نظر داریم فراهم می شود و به طور ساده خواهیم نوشت: اگر کشور کاربر برابر عبارت x بود زبان سایت را y قرار بده و...، در برنامه نویسی بررسی این برابر بودن یا نبودن با دستورات شرطی (Conditional Statement) و عملگرهای مقایسه ای (Comparison Operators) انجام می شود، با دستورات شرطی در مباحث آینده آشنا خواهیم شد اما عملگرهای مقایسه ای را در ادامه به صورت موردی بررسی می کنیم.
برای مقایسه برابری مقدار دو طرف رابطه از علامت == در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 5;
($a == $b)
در مثال بالا برابر بودن مقدار متغیر a را با b مقایسه کرده ایم که این مقایسه درست (true) خواهد بود، چون مقدار هر دو متغیر 5 است، با علامت == مقایسه را می توان برای مقادیر رشته ای / عددی نیز انجام داد، به طور مثال مقایسه زیر نیز درست (true) خواهد بود، هرچند نوع متغیر a به صورت عددی (Int) و نوع متغیر b به صورت رشته ای (String) است، به عبارت ساده تر در عملگر == نوع متغیرها لحاظ نمی شود و صرفا مقدار آنها با هم مقایسه می شود.<?php
$a = 5;
$b = '5';
if($a == $b){
echo 1;
}else{
echo 0;
}
?>
که مقدار 1 در خروجی چاپ خواهد شد.برای مقایسه برابر بودن دو طرف رابطه از هر جهت (نوع و مقدار) از علامت === استفاده می کنیم، مثال:
$a = 5;
$b = '5';
($a === $b)
در مثال بالا عدد 5 را به صورت عددی (Int) با عدد '5' به صورت رشته ای (String) با عملگر === مقایسه کرده ایم، نتیجه بر خلاف آنچه در مورد عملگر == دیدیم نادرست (false) خواهد بود، به این دلیل که عملگر === برابری دو طرف رابطه را از هر لحاظ (نوع و مقدار) بررسی می کند و اگر نوع یا مقدار دو متغیر یکسان نباشد، نتیجه نادرست (false) خواهد بود.برای مقایسه برابر نبودن دو طرف رابطه از علامت =! در PHP استفاده می کنیم:
$a = 5;
$b = 5;
($a != $b)
مقایسه بالا یعنی اگر متغیر a برابر b نباشد رابطه برقرار (true) است، اما رابطه بالا برقرار نیست و نتیجه نادرست (false) است، چرا که مقدار هر دو متغیر 5 و برابر هستند، در صورتی که ما نابرابری آنها را مقایسه کرده ایم.نکته: علامت <> نیز در PHP برای مقایسه برابر نبودن دو طرف رابطه استفاده می شود، این حالت چندان متداول نیست اما کارکردی مشابه با علامت =! دارد.
برای مقایسه برابر نبودن دو طرف رابطه از هر جهت (نوع و مقدار) از علامت ==! استفاده می کنیم، مثال:
$a = 5;
$b = '5';
($a !== $b)
در مثال بالا عدد 5 را به صورت عددی (Int) با عدد '5' به صورت رشته ای (String) با عملگر ==! مقایسه کرده ایم، نتیجه بر خلاف آنچه در مورد عملگر =! دیدیم درست (true) خواهد بود، به این دلیل که عملگر ==! نابرابری دو طرف رابطه را از هر لحاظ (نوع و مقدار) بررسی می کند و اگر نوع یا مقدار دو متغیر یکسان نباشد، رابطه نابرابر و نتیجه درست (true) خواهد بود.برای مقایسه کوچکتر بودن از علامت > در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 8;
($a < $b)
با توجه به مثال بالا، متغیر a از متغیر b کوچکتر است و مقایسه درست (true) خواهد بود.برای مقایسه بزرگتر بودن از علامت < در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 8;
($a > $b)
بر این اساس رابطه بالا نادرست (false) است، چرا که مقدار متغیر a برابر با 5 و از متغیر b که مقدار آن 8 است بزرگتر نیست، بنابر این رابطه برقرار نمی باشد.برای مقایسه کوچکتر مساوی از علامت => در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 8;
($a <= $b)
بر اساس مثال بالا، متغیر a از b کوچکتر است اما مساوی نیست، با این حال این رابطه درست (true) خواهد بود چرا که کافی است یکی از شرایط مقایسه صحیح باشد تا کل آن صحیح (true) فرض شود، به عبارتی عملگر => یعنی کوچکتر یا مساوی.برای مقایسه بزرگتر مساوی بودن نیز از علامت =< در PHP استفاده می کنیم، مثال:
$a = 5;
$b = 8;
($a >= $b)
با توجه به مثال بالا، متغیر a بزرگتر یا مساوی با b نیست، پس هیچ کدام از پارامترهای این مقایسه برقرار نیست و نتیجه نادرست یا false خواهد بود.عملگرهای منطقی (Logical Operators) در PHP
عملگرهای منطقی (Logical Operators) در PHP مانند اغلب زبان های برنامه نویسی نقش مکمل را برای عملگرهای مقایسه ای دارند و نتیجه یک یا چند مقایسه را به صورت true یا false برمی گردانند، بر همین اساس در حالت true نیازی به استفاده از علامت خاصی در Syntax نیست اما برای حالت false از علامت ! (نباشد) در ابتدای مقایسه استفاده می کنیم، برای مقایسه چندگانه نیز علامت && (و) و علامت || (یا) کاربرد دارند، همچنین PHP از عبارات دستوری متنی (and، or و xor) نیز پشتیبانی می کند، مثال های زیر به درک موضوع کمک خواهند کرد.
($a > 12)
عبارت بالا یعنی اگر متغیر a بزرگتر از 12 باشد رابطه برقرار و مقدار true برگردانده می شود، در این حالت نیازی به استفاده از علامت خاصی نیست، در واقع عملگر منطقی در این مقایسه استفاده نشده است!!($a > 12)
عبارت بالا یعنی اگر متغیر a بزرگتر از 12 نباشد رابطه برقرار و مقدار true برگردانده می شود، همان طور که مشخص است در این مقایسه از علامت منطقی ! استفاده شده است.($a > 12 && $a < 20)
($a > 12 and $a < 20)
عبارت بالا یعنی اگر متغیر a بزرگتر از 12 و در عین حال کوچکتر از 20 باشد رابطه برقرار و مقدار true برگردانده می شود، در این رابطه برای بررسی چندگانه از علامت && و عبارت دستوری and استفاده کرده ایم و در صورتی کل این رابطه برقرار و true است که نتیجه هر دو مقایسه true باشد، تنها تفاوت علامت && و عبارت دستوری and حالت تقدم (Precedence) آنها در مفسر PHP است که علامت && نسبت به and مقدم است، این تفاوت زمانی مشخص می شود که عملگرهای منطقی را با عملگر اختصاص دهنده = در یک قسمت استفاده کنیم، به طور مثال خروجی متغیر a در مثال زیر در حالت اول برابر با false و در حالت دوم برابر با true خواهد بود و دلیل این تفاوت تقدم و تاخر پردازش عملگرها نسبت به هم در مفسر PHP است (علامت && نسبت به = مقدم و علامت = نسبت به and مقدم است):<?php
$a = null;
$b = true;
$c = false;
$a = $b && $c;
var_dump($a);
$a = $b and $c;
var_dump($a);
?>
نتیجه نمونه کد بالا به صورت زیر خواهد بود.boolean false
boolean true
در حالت اول ابتدا مقایسه با عملگر && صورت گرفته و سپس مقدار برگردانده شده با عملگر = به متغیر a نسبت داده می شود اما در حالت دوم ابتدا مقدار a به عنوان خروجی برگردانده شده و سپس مقایسه با عملگر and صورت می گیرد که در خروجی تاثیری ندارد (توجه کنیم در حالت دوم نیز در نهایت مقدار متغیر a برابر با false خواهد بود و اگر در قسمت های دیگر برنامه از آن استفاده کنیم به صورت flase اثرگذار است، در اینجا صرفا بحث تقدم و تاخر عملگرها است و اینکه کدام یک ابتدا پردازش و اعمال می شوند)، در ادامه به بررسی سایر عملگرهای منطقی می پردازیم.($a > 12 || $a < 20)
($a > 12 or $a < 20)
عبارت بالا یعنی اگر متغیر a بزرگتر از 12 یا کوچکتر از 20 باشد رابطه برقرار و مقدار true برگردانده می شود، در این رابطه برای بررسی چندگانه از علامت || و عبارت دستوری or استفاده کرده ایم و در صورتی کل این رابطه برقرار و true است که نتیجه یکی از دو مقایسه true باشد، مانند علامت && و and تنها تفاوت علامت || و عبارت دستوری or حالت تقدم پردازش آنها در مفسر PHP است که علامت || نسبت به or مقدم است، در مجموع استفاده از علامت && و || شیوه معمول و توصیه شده است و برای پرهیز از بروز مشکلات پیش بینی نشده بهتر است از این عملگرها استفاده کنیم.آخرین عملگر منطقی PHP که با آن آشنا خواهیم شد عبارت دستوری xor است، این عملگر زمانی مقدار true برمی گرداند که فقط یکی از طرفین مقایسه true باشد، به عبارت دیگر در صورتی که هر دو طرف مقایسه true یا false باشند عملگر xor مقدار false را به عنوان نتیجه برمی گرداند.
<?php
$b = true;
$c = false;
$a = $b xor $c;
var_dump($a);
?>
از آنجایی که مقدار متغیر فرضی b به صورت true و مقدار متغیر c به صورت false است، رابطه برقرار بوده و نتیجه مقایسه بالا به صورت زیر خواهد بود.boolean true
نکته: برای نمایش ساختار پارامترها از تابع var_dump در PHP استفاده می کنیم، این تابع خصوصیات پارامترها را از نظر نوع (Type) و مقدار (Value) در خروجی چاپ می کند و شیوه مرسوم در خطایابی برنامه ها حین کدنویسی است.دسته بندی: آموزش مقدماتی » PHP
برچسب ها: PHP

دستور switch و case در PHP
تعریف و استفاده از متغیر (Variable) در PHP
توابع کار با آرایه در PHP - بخش اول
توابع (Functions) در PHP
توابع کار با آرایه در PHP - بخش سوم
دیدگاه


مهدی صفری
۱۶:۵۷ ۱۳۹۲/۱۱/۱۷
سلام
چطور می شود دو تاریخ زیر را از هم تفریق کرد و جوابی به صورت عدد به دست آورد؟
چطور می شود دو تاریخ زیر را از هم تفریق کرد و جوابی به صورت عدد به دست آورد؟
2/6/2014 04:57:02
2/4/2014 04:57:02
لطفا عبارت "تاریخ زمان" را در قسمت جستجو وارد کنید، هم برای PHP و هم برای JavaScript در مطالب جداگانه و به صورن مفصل در این رابطه بحث شده (بخش نظرات را هم مطالعه کنید).
مسعود
۱۴:۰۷ ۱۳۹۲/۱۱/۰۱
ببخشید با زبان php میشه نرم افزار تحت وب طراحی کرد. و این که میشه زبان php رو با زبان دیگه مثل ++c/c توسعه داد. سوال اخر میشه کدهای پرل رو بین کدهای php نوشت؟
در پاسخ به سوال اول:
PHP از پرکاربردترین ها و یکی از مناسب ترین زبان ها برای نوشتن و طراحی نرم افزارهای تحت وب است.
در پاسخ به سوال دوم:
تا آنجا که اطلاع داریم، امکان نوشتن اکستنشن هایی برای PHP با ++C وجود دارد، اما PHP برای وب به اندازه ای قوی هست که نیازی به وام گرفتن از زبان های اپلیکیشنی نباشد.
در مورد سوال آخر:
این سبک کدنویسی در وب توصیه نمی شود، Perl و PHP دو زبان سمت سرور با مفسرهای متفاوت هستند و حتی اگر با توابعی مانند shell_exec قابل ترکیب باشند، به تجربه در موارد زیادی با مشکل مواجه خواهید شد.
PHP از پرکاربردترین ها و یکی از مناسب ترین زبان ها برای نوشتن و طراحی نرم افزارهای تحت وب است.
در پاسخ به سوال دوم:
تا آنجا که اطلاع داریم، امکان نوشتن اکستنشن هایی برای PHP با ++C وجود دارد، اما PHP برای وب به اندازه ای قوی هست که نیازی به وام گرفتن از زبان های اپلیکیشنی نباشد.
در مورد سوال آخر:
این سبک کدنویسی در وب توصیه نمی شود، Perl و PHP دو زبان سمت سرور با مفسرهای متفاوت هستند و حتی اگر با توابعی مانند shell_exec قابل ترکیب باشند، به تجربه در موارد زیادی با مشکل مواجه خواهید شد.
مصطفی
۲۰:۳۴ ۱۳۹۲/۰۸/۲۶
سلام
می خواستم بدونم درصد چطور حساب میشه مثلا می خوایم 10 رو ضرب در 40 درصد کنیم
می خواستم بدونم درصد چطور حساب میشه مثلا می خوایم 10 رو ضرب در 40 درصد کنیم
اگر منظورتان این است که 40 درصد 10 چقدر می شود، از تابع زیر استفاده کنید:
<?php
function Percentage($total, $percentage){
return $total * ($percentage / 100);
}
echo Percentage(10, 40)
?>
مومني موگويي
۲۲:۵۴ ۱۳۹۲/۰۶/۱۲
عملگر مقايسه اي <> و عملگر ==! به چه معني هستند ميشه توضيح بدين
علامت <> به این صورت کاربردی در PHP ندارد (به صورت تک تک به معنی بزرگتر و کوچکتر است)، عملگر ==! نابرابری دو مقدار را از هر لحاظ مقایسه می کند، به فرض '1' با 1 با این عملگر مساوی نیست، چون عدد اول یک string است اما عدد دوم یک int است.
امیر
۰۰:۲۷ ۱۳۹۲/۰۴/۰۹
سلام ببخشید اگه سوالمو جای مناسبی طرح نکردم
کد php برای نمایش نام مرورگر وجود داره؟
کد php برای نمایش نام مرورگر وجود داره؟
در PHP برای شناسایی اطلاعات مربوط به مرورگر به صورت خام از دو روش زیر استفاده می شود:
<?php
echo @$_SERVER['HTTP_USER_AGENT'];
$browser = get_browser(NULL, TRUE);
print_r($browser);
?>
همان طور که گفتیم، این اطلاعات در ابتدا به صورت خام و پردازش نشده هستند، اما با استفاده از توابعی مانند مثال زیر، می توانید جزئیات مربوط به مرورگر را به تفکیک نام، نسخه اصلی، نسخه فرعی و... استخراج کنید.<?php
function DetectBrowser(){
$browser_array = array(
'version' => '0.0.0',
'majorver' => 0,
'minorver' => 0,
'build' => 0,
'name' => 'نا مشخص',
'useragent' => NULL
);
$browser_list = array(
'firefox', 'msie', 'opera', 'chrome', 'safari', 'mozilla', 'seamonkey', 'konqueror', 'netscape', 'gecko', 'navigator', 'mosaic', 'lynx', 'amaya', 'omniweb', 'avant', 'camino', 'flock', 'aol'
);
if(isset($_SERVER['HTTP_USER_AGENT'])){
$browser_array['useragent'] = $_SERVER['HTTP_USER_AGENT'];
$user_agent = strtolower($browser_array['useragent']);
foreach($browser_list as $key => $value){
if(preg_match("/($value)[\/ ]?([0-9.]*)/", $user_agent, $match)){
$browser_array['name'] = $match[1];
$browser_array['version'] = $match[2];
@list($browser_array['majorver'], $browser_array['minorver'], $browser_array['build']) = explode('.', $browser_array['version']);
break;
}
}
}
return $browser_array;
}
$result = DetectBrowser();
echo 'مرورگر: '.$result['name'].' نسخه: '.$result['version'];
?>
امین
۲۱:۳۵ ۱۳۹۲/۰۳/۲۴
با سلام
چطوری میشه حاصل تقسیم رو به صورت رند نشون بده؟
مثلا 5 تقسیم بر 2 میشه 2.5 ولی نتیجه رو 2 یا 3 نشون بده (به صورت عدد صحیح)
چطوری میشه حاصل تقسیم رو به صورت رند نشون بده؟
مثلا 5 تقسیم بر 2 میشه 2.5 ولی نتیجه رو 2 یا 3 نشون بده (به صورت عدد صحیح)
می توانید از تابع
round
و تنظیمات آن در PHP استفاده کنید، مثال:<?php
echo round(2.5, 0, PHP_ROUND_HALF_UP);//نتیجه: 3
echo round(2.5, 0, PHP_ROUND_HALF_DOWN);//نتیجه: 2
?>
همچنین تابع ceil
عدد اعشاری را به بالا و تابع floor
عدد اعشاری را به پائین گرد می کند.
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.