parsgreen.com
article

عملگرهای (Operators) محاسبه و مقایسه در php

php-operators

مثل بسیاری از زبان های برنامه نویسی، php نیز از قوانین و عملگرهای خاصی جهت محاسبه و مقایسه مقادیر استفاده می کند، در بحث پیشین از بخش آموزش های مقدماتی، دیدیم که چگونه می توان متغیر ها را تعریف کرد و گفتیم که متغیر می تواند هر نوع داده ای باشد که در کد ما مورد نیاز است (اعم از متغیر هایی که خودمان تعریف می کنیم یا توسط کاربران و از طریق فرم های html ارسال و پردازش می شود یا مواردی دیگر)، در این یادداشت می خواهیم ببینیم که php چگونه مقادیر را مقایسه و اعمال ریاضی را محاسبه می کند (البته از عبارت ریاضی، ترسی نداشته باشید؛ ریاضی در بحث ما در حد محاسبات اولیه است و بیش از این به آن نیازی نیست!).

عملگرها در php شباهت زیادی به جاوا اسکریپت دارند، اگر تا به حال با جاوا اسکریپت کار کرده باشید، در این مورد مشکل خاصی با php نخواهید داشت ولی به هر صورت سعی می کنیم مباحث را در عین ساده گویی، مختصر و مفید بیان کنیم.

عملگرهای محاسبه (arithmetic operators) در php


php با استفاده از علائم زیر، محاسبات ریاضی را انجام می دهد.
برای جمع از علامت + استفاده می کنیم:
<?php
$a = 5;
$b = 8;
$addition = $a + $b;
?>
در مثال بالا دو متغیر فرضی a و b را با هم جمع کرده ایم که حاصل 13 خواهد شد.
برای تفریق از علامت - استفاده می کنیم:
<?php
$a = 5;
$b = 8;
$subtraction = $b - $a;
?>
حاصل مثال بالا 3 خواهد بود.
برای ضرب از علامت * استفاده می کنیم:
<?php
$a = 5;
$b = 8;
$multiplication = $b * $a;
?>
حاصل مثال بالا 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 در محاسبات، امکان ترکیب علائم ریاضی با مساوی است که برای کوتاه کردن کدنویسی استفاده می شود، بر اساس این روش علائم زیر معادل روش استاندارد خود هستند (نتیجه همان است فقط شیوه نگارش فرق می کند، از این شیوه معمولا برای تکرار یک متغیر با مقادیر مختلف در یک کد استفاده می شود):
علامت =+ معادل = و + است، مثال زیر روشن است:
<?php
$a += 5;//short method
$a = $a + 5//long method
?>
علامت =- معادل = و - است:
<?php
$a -= 5;//short method
$a = $a - 5//long method
?>
علامت =* معادل = و * است:
<?php
$a *= 5;//short method
$a = $a * 5//long method
?>
علامت =/ معادل = و / است:
<?php
$a /= 5;//short method
$a = $a / 5//long method
?>
علامت =% معادل = و % است:
<?php
$a %= 5;//short method
$a = $a % 5//long method
?>
و نهایتا علامت نقطه که در مطلب پیشین نیز درباره آن به طور مختصر گفتیم، برای متصل کردن دو مقدار رشته ای (متنی) استفاده می شود:
<?php
$a .= 'text';//short method
$a = $a . 'text'//long method
?>

عملگرهای مقایسه (comparison operators) در php


حال که با علائم محاسباتی در php آشنا شدیم، نوبت به فراگیری اصول مقایسه ای است، اما اساسا مقایسه در برنامه نویسی چه فایده ای دارد؟! برای اینکه درک کلی و روشنی از مقایسه و فایده آن در php داشته باشید، آموزش را با مثالی ادامه می دهیم؛ فرض کنید تعدادی از کاربران ما عضو یک کشور خاص هستند (اطلاعات آنها در پایگاه داده ما موجود است)، حال می خواهیم به مفسر php بگوییم که اگر کشور کاربر برابر آن عبارت بود، او را در قسمت خاصی قرار دهد یا زبان را مناسب با آن کشور تنظیم نماید، امکان این کار با مقایسه کشور کاربر با عبارتی که ما مد نظر داریم فراهم می شود و به طور ساده خواهیم نوشت: (اگر کشور کاربر برابر عبارت x بود، زبان سیستم را y قرار بده و...)؛ این برابر بودن یا نبودن با علائم مقایسه ای انجام می شود.
برای مقایسه برابری دو طرف رابطه از علامت == استفاده می کنیم:
<?php
$a = 5;
$b = 5;
$a == $b;
?>
در مثال بالا برابر بودن متغیر a را با b مقایسه کرده ایم که این مقایسه درست خواهد بود؛ چون مقدار هر دو متغیر 5 است (مقایسه را می توان برای مقادیر رشته ای (متنی) نیز انجام داد).
نکته: برای مقایسه برابر بودن دو طرف رابطه از هر جهت (هم از لحاظ مقدار و هم نوع)، از علامت === استفاده می کنیم، به طور مثال اگر عدد '5' را به صورت متنی (string) با عدد 5 به صورت عددی با عملگر === مقایسه کنیم، نتیجه FALSE خواهد بود.
برای مقایسه برابر نبودن دو طرف رابطه از علامت =! استفاده می کنیم:
<?php
$a = 5;
$b = 5;
$a != $b;
?>
بر این اساس، حاصل رابطه بالا درست نیست، چرا که مقدار هر دو متغیر 5 است و برابر هستند.
نکته: برای مقایسه برابر نبودن دو طرف رابطه از هر جهت (یا از لحاظ مقدار یا از نظر نوع)، از علامت ==! استفاده می کنیم، به طور مثال اگر عدد '5' را به صورت متنی (string) با عدد 5 به صورت عددی با عملگر ==! مقایسه کنیم، نتیجه TRUE خواهد بود.
برای مقایسه کوچکتر بودن از علامت > استفاده می کنیم:
<?php
$a = 5;
$b = 8;
$a < $b;
?>
با توجه به مثال بالا، متغیر a از متغیر b کوچکتر خواهد بود.
برای مقایسه بزرگتر بودن از علامت < استفاده می کنیم:
<?php
$a = 5;
$b = 8;
$a > $b;
?>
بر این ساس رابطه بالا صحیح نیست، چرا که متغیر a مقدارش 5 است و از متغیر b که مقدارش 8 است بزرگتر نیست.
برای مقایسه کوچکتر مساوی از علامت => استفاده می کنیم:
<?php
$a = 5;
$b = 8;
$a <= $b;
?>
بر اساس رابطه بالا، متغیر a از b کوچکتر است اما مساوی نیست، لذا این رابطه درست خواهد بود (کافی است یکی از شرایط مقایسه صحیح باشد تا کل آن صحیح (true) فرض شود).
برای مقایسه بزرگتر مساوی بودن نیز از علامت =< استفاده می کنیم:
<?php
$a = 5;
$b = 8;
$a >= $b;
?>
با توجه به مثال بالا، متغیر a بزرگتر یا مساوی با b نیست، پس هیچ کدام از پارامترهای این مقایسه صحیح نیست (و مقدار false خواهد بود).
sectionدسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
» توابع (Functions) در php
» کار با switch و case در php
» توابع کار با آرایه در php - بخش اول
» دستورات شرطی if و else در php
» حلقه for و while در php
commentنظرات (۲۳ یادداشت برای این مطلب ارسال شده است)
نویسنده: امین
زمان: ۲۱:۳۵:۵۱ - تاریخ: ۱۳۹۲/۰۳/۲۴
با سلام
چطوری میشه حاصل تقسیم رو به صورت رند نشون بده؟
مثلا 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
عدد اعشاری را به پائین گرد می کند.
نویسنده: امیر
زمان: ۰۰:۲۷:۱۸ - تاریخ: ۱۳۹۲/۰۴/۰۹
سلام ببخشید اگه سوالمو جای مناسبی طرح نکردم
کد 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'];
?>
نویسنده: مومني موگويي
زمان: ۲۲:۵۴:۲۵ - تاریخ: ۱۳۹۲/۰۶/۱۲
عملگر مقايسه اي <> و عملگر ==! به چه معني هستند ميشه توضيح بدين
پاسخ: 
علامت <> به این صورت کاربردی در PHP ندارد (به صورت تک تک به معنی بزرگتر و کوچکتر است)، عملگر ==! نابرابری دو مقدار را از هر لحاظ مقایسه می کند، به فرض '1' با 1 با این عملگر مساوی نیست، چون عدد اول یک string است اما عدد دوم یک int است.
نویسنده: مصطفی
زمان: ۲۰:۳۴:۴۱ - تاریخ: ۱۳۹۲/۰۸/۲۶
سلام
می خواستم بدونم درصد چطور حساب میشه مثلا می خوایم 10 رو ضرب در 40 درصد کنیم
پاسخ: 
سلام
اگر منظورتان این است که 40 درصد 10 چقدر می شود، از تابع زیر استفاده کنید:
<?php
function Percentage($total, $percentage){
return $total * ($percentage / 100);
}
echo Percentage(10, 40)
?>
نویسنده: مسعود
زمان: ۱۴:۰۷:۳۲ - تاریخ: ۱۳۹۲/۱۱/۰۱
ببخشید با زبان php میشه نرم افزار تحت وب طراحی کرد. و این که میشه زبان php رو با زبان دیگه مثل ++c/c توسعه داد. سوال اخر میشه کدهای پرل رو بین کدهای php نوشت؟
پاسخ: 
در پاسخ به سوال اول:
PHP از پرکاربردترین ها و یکی از مناسب ترین زبان ها برای نوشتن و طراحی نرم افزارهای تحت وب است.
در پاسخ به سوال دوم:
تا آنجا که اطلاع داریم، امکان نوشتن اکستنشن هایی برای PHP با ++C وجود دارد، اما PHP برای وب به اندازه ای قوی هست که نیازی به وام گرفتن از زبان های اپلیکیشنی نباشد.
در مورد سوال آخر:
این سبک کدنویسی در وب توصیه نمی شود، Perl و PHP دو زبان سمت سرور با مفسرهای متفاوت هستند و حتی اگر با توابعی مانند shell_exec قابل ترکیب باشند، به تجربه در موارد زیادی با مشکل مواجه خواهید شد.
نویسنده: مهدی صفری
زمان: ۱۶:۵۷:۵۰ - تاریخ: ۱۳۹۲/۱۱/۱۷
سلام
چطور می شود دو تاریخ زیر را از هم تفریق کرد و جوابی به صورت عدد به دست آورد؟
2/6/2014 04:57:02
2/4/2014 04:57:02
پاسخ: 
سلام
لطفا عبارت "تاریخ زمان" را در قسمت جستجو وارد کنید، هم برای PHP و هم برای JavaScript در مطالب جداگانه و به صورن مفصل در این رابطه بحث شده (بخش نظرات را هم مطالعه کنید).
نویسنده: sahar
زمان: ۱۵:۱۷:۴۶ - تاریخ: ۱۳۹۳/۰۷/۱۹
سلام
من کد زیر را نوشتم برای چاپ وارون یک عدد اما چیزی چاپ نمیشه میشه بگید ایراد کار کجاست ؟
<?php
$n = 254;
while($n >= 5){
$d = $n % 10;
echo $d.'<br>';
$n = $n / 10;
}
?>
پاسخ: 
سلام
کد شما اشتباه تایپی + استفاده نادرست از علامت => داشت که اصلاح شد.
نویسنده: سبحان
زمان: ۱۸:۱۵:۵۵ - تاریخ: ۱۳۹۳/۰۸/۱۸
سایتت عالیه
نویسنده: الهه
زمان: ۱۰:۳۵:۴۵ - تاریخ: ۱۳۹۳/۱۲/۱۹
سلام
من یک کد ساده برای تفریق نوشتم که بصورت رندوم جواب رو اشتباه برمیگردونه.
مثال کد:
$ghabelepardakht=$_POST['ghabelepardakht'];
$sumdaryaft=$mdaryafti1+$mdaryafti2+$mdaryafti3;
$baghi=$ghabelepardakht-$sumdaryaft;
تو کد بالا یک مبلغ کلی دارم که مشتری باید پرداخت کنه یعنی همون قابل پرداخت.
مشکل من تو باقیمانده است که در اکثر مواقع جمع دریافتی تو دیتابیس بجای محاسبه باقیمانده ثبت میشه. کمک کنید لطفا
پاسخ: 
سلام
اشکال خاصی به لحاظ syntax در کدهای شما وجود ندارد، لذا این مسئله به موارد دیگری مروبط می شود که پی بردن به آنها نیازمند بررسی فرآیند اجرای کدهای شما از ابتدا تا زمان ذخیره در دیتابیس است!
نویسنده: سعید
زمان: ۱۲:۵۷:۰۵ - تاریخ: ۱۳۹۴/۰۶/۱۱
سلام
وقتی از محاسبه زیر استفاده میکنم نتیجه به صورت نماد علمی نمایش داده میشه
$h = time();
$key = (($h*59)*995) ;
echo $key ;
مثلا این نتیجه رو نشون میده
6.7910528671286E+18
باید چکار کنم که نتیجه هر چقدر هم طولانی باشه به صورت کامل نشان داده بشه نه به صورت نماد علمی
مثلا
19819654549683199310496461616841
باتشکر
پاسخ: 
سلام
نمونه کد درج شده تست شد، نتیجه یک عدد صحیح است و نماد علمی خاصی وجود ندارد! شاید موارد را از یک تابع یا کد دیگری عبور می دهید که این حالت پیش می آید؟!
نویسنده: سعید
زمان: ۲۲:۱۲:۵۸ - تاریخ: ۱۳۹۴/۰۶/۱۱
سلام مجدد
ممنون بابت پاسختون
بله درسته ولی اگه یکم عدد بزرگتر بشه به صورت نماد علمی نمایش میده مثل زیر
$h = time();
$key = (($h*52439)*996784235) ;
echo $key;
که عدد 7.5332877450704E+22 رو نمایش میده
پاسخ: 
سلام
می توانید از نمونه کد زیر استفاده کنید:
<?php
$h = time();
$key = (($h*52439)*996784235) ;
$key = number_format($key, 0, '', '');
echo $key ;
?>
نویسنده: setareh
زمان: ۱۹:۲۴:۳۸ - تاریخ: ۱۳۹۴/۰۶/۱۳
با سلام، من میخوام یه آرایه ی ۶ عضوی (اعداد) بنویسم که بعدش یه بار کل آرایه رو چاپ کنه، تو خط بعدی هم اعداد توی آرایه رو به ترتیب از کوچک به بزرگ چاپ کنه !
بخشه نوشتن آرایه و چاپ کردن خود آرایه رو بلدم اما نمیدونم چجوری اعداد رو با هم مقایسه کنم !!!!! میشه کمکم کنید لطفا؟!؟ خیلی ممنون
پاسخ: 
سلام
برای چینش یا Sort اعضای آرایه به ترتیب کوچک به بزرگ و برعکس نمونه کد زیر کاربرد دارد:
<?php
$array = array(1, 3, 8, 4, 6);
foreach($array as $key => $value){
echo $value.'<br>';
}
echo '<hr>';
arsort($array);
//print_r($array);
asort($array);
//print_r($array);
foreach($array as $key => $value){
echo $value.'<br>';
}
?>
نویسنده: fateme mirzaee
زمان: ۰۰:۱۹:۰۳ - تاریخ: ۱۳۹۴/۰۹/۱۹
عددی را به توان 1.86
و عدد دیگری را به توان 1/5 یک پنج برسانم
در php چگونه میتوان چنین محاسبه کرد
پاسخ: 
برای رساندن عددی به توان، نمونه راه حل های زیر کاربرد دارند:
<?php
$num = 4;
echo pow($num, 1.86);
echo '<br>';
echo pow($num, (1/5));
?>
نویسنده: آموزش php
زمان: ۲۳:۴۰:۲۴ - تاریخ: ۱۳۹۴/۰۹/۱۹
عالی بود مهندس...
خدا خیرت بده بابت مطالبی که میزاری
نویسنده: محمد
زمان: ۱۲:۰۷:۳۳ - تاریخ: ۱۳۹۴/۱۰/۱۷
سلام
این همه آموزش های خوب ولی من این سوالمو پیدا نکردم توشون من می خوام از یک عدد یه درصدی رو کم کنم مثلا می خوام از عدد 100 ده درصد کم کنم و نتیجه رو نشون بدم بیشتر برای یک ابزار محاسبه ای می خوام که مثلا کاربر عددش رو وارد کنه سیستم خودش اون مقدار درصد و کم کنه بهش نمایش بده شما فقط بگید برای اینکه از یک عدد درصدی رو بخوایم کم کنیم باید چیکار کنیم؟
مثالی دیگر:
از 1000 مقدار 35 درصد کم بشه و نتیجه با echo چاپ بشه
میشه راهنمایی کنید؟
پاسخ: 
سلام
قاعدتا این بخشی است که باید با توجه به دانسته های برنامه نویسی و دستورات یک زبان، کدهای منطقی بنویسید تا خروجی مورد نظرتان را دریافت کنید (تبدیل ایده ذهنی به کد)! با توجه به شرح مشکل، ابتدا نیاز دارید که مقدار درصدی یک عدد را محاسبه (تقسیم یک عدد بر صد و ضرب آن با مقدار مد نظر) و سپس مقدار کل را از مقدار درصد محاسبه شده، کم کنید، با این حساب:
<?php
$num = 1000;
$percent = 35;
$percentage = ($num / 100) * $percent;
$result = $num - $percentage;
echo $result;
?>
paged صفحه 1 از 2




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

4 × 2
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...