در آموزش توابع ریاضی در php قصد داریم چندتا از مهمترین توابعی مربوط به عملیات هایی که بر روی اعداد می توان انجام داد را بررسی کنیم. در مقالات آموزش قبل یک سری از توابع مهم مربوط به کار با رشته ها (string) را دیدیم .
سینتکس توابع ریاضی در php که بیشتر مربوط به اعداد است بر خلاف توابع کار با رشته ها در php ، بسیار سینتکس ساده ای دارند.
با استفاده از توابعی که معرفی می شود به راحتی می توانید عملیات های ریاضی در PHP را انجام بدید
تابع abs()
تابع abs() یک مقدار صحیح و مثبت را از عددی که به آن پاس می دهیم ، به ما برگشت (return) می دهد.
سینتکس
1 |
abs(number) |
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php echo abs(7.8)."<br>"; echo abs(-7.8)."<br>"; echo abs(-7)."<br>"; echo abs(7)."<br>"; /* output: 7.8 7.8 7 7 */ ?> |
تابع ceil()
کلمه ceil به معنای سقف است . پس تابع ceil مقدار عددی که قسمت اعشار داشته باشد را افزایش می دهد تا یک عدد رند بدست بیاد.
سینتکس
1 |
ceil(number) |
تابع floor()
کلمه floor به معنی کف هستش . پس تابع floor() مقدار اعشاری عدد داده شده را حذف و به کمترین مقدار عددی صحیح تبدیل می کند
سینتکس
1 |
floor(number) |
تابع round()
تابع round هم قسمت اعشاری عدد را افزایش می دهد تا یک عدد رند حاصل شود .
سینتکس
1 |
round(number) |
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php echo ceil(7.8)."<br>"; echo floor(7.8)."<br>"; echo round(7.3)."<br>"; echo round(7.6)."<br>"; /* output: 8 7 7 8 */ ?> |
همانطور که از مثال تابع ceil دیدید مقدار اعشاری عدد را افزایش میدهد که به طور مثال عدد ۷٫۸ را به ۸ تبدیل میکند در حالی که تابع floor برعکس آن مقدار ۷٫۸ را به ۷ می رساند .تابع round() هم بر اساس مقداری که به آن داده شده عمل می کند به اینصورت که اگر مقدار اعشاری بزرگتر یا مساوی .۵ (>=.5) باشد آن را به طرف بالا یعنی افزایش رند میکند در غیر اینصورت به کمترین مقدار صحیح (همانند تابع floor) تبدیل می کند.
تابع pow()
Pow مخفف power است که در زبان انگلیسی به معنی قدرت و در ریاضی به معنای به توان رساندن یک عدد است تابع pow مقدار توان اعداد را محاسبه می کند . به اینصورت که به عنوان ورودی اول عدد مورد نظر و ورودی دوم مقدار توان را می پذیرد.
سینتکس
1 |
pow(x,y) |
مثال
1 2 3 4 5 6 7 8 9 |
<?php echo pow(2,3)."<br>"; echo pow(3,2)."<br>"; /* output: 8 9 */ ?> |
تابع sqrt()
تابع sqrt ریشه توان دوم اعداد را محاسبه می کند.
سینتکس
1 |
sqrt(number) |
مثال
1 2 3 4 5 6 7 8 |
<?php echo sqrt(4)."<br>"; echo sqrt(9)."<br>"; /* output: 2 3 */ ?> |
تابع exp()
تابع exp مقداری که یک عدد توان را افزایش می دهد را نشان می دهد
سینتکس
1 |
exp(number) |
مثال
1 2 3 4 5 6 7 8 |
<?php echo exp(1)."<br>"; echo exp(2)."<br>"; /* output: 2.718281828459 7.3890560989307 */ ?> |
تابع decbin()
تابع decbin مقدار عددی دسیمال (decimal) به عدد باینری (binary) تبدیل می کند.
سینتکس
1 |
decbin(number) |
تابع dechex()
تابع dechex مقداد عددی دسیمال را به هگزادسیمال (hexadecimal) تبدیل می کند.
سینتکس
1 |
dechex(number) |
تابع decoct()
تابع decoct مقدار عددی دسیمال را به اوکتال (octal) تبدیل می کند
سینتکس
1 |
decoct(number) |
مثال
1 2 3 4 5 6 7 8 9 10 |
<?php echo "Hexadecimal value of 10 = ".dechex(10)."<br>"; echo "Octal value of 10 = ".decoct(10)."<br>"; echo "Binary value of 10 = ".decbin(10)."<br>"; /* output: Hexadecimal value of 10 = a Octal value of 10 = 12 Binary value of 10 = 1010 */ ?> |
تابع bindec()
تابع bindec مقدار عددی باینری را به دسیمال تبدیل می کند
سینتکس
1 |
bindec(number) |
تابع octdec()
تابع octdec مقدار عددی اوکتال را به دسیمال تبدیل می کند
سینتکس
1 |
octdec(number) |
تابع hexdec()
تابع hexdec مقدار عددی هگزادسیمال را به مقدار دسیمال تبدیل می کند.
سینتکس
1 |
hexdec(number) |
مثال
1 2 3 4 5 6 7 8 9 10 |
<?php echo hexdec('a')."<br>"; echo octdec(12)."<br>"; echo bindec(1010)."<br>"; /* output: 10 10 10 */ ?> |
تابع fmod()
تابع fmod باقیمانده حاصل شده از تقسیم عدد ورودی اول بر ورودی دوم را برگشت می دهد
سینتکس
1 |
fmod(x,y) |
مثال
1 2 3 4 5 6 7 8 |
<?php echo fmod(10,3)."<br>"; echo fmod(13,5)."<br>"; /* output: 1 3 */ ?> |
تابع max()
تابع max بیشترین مقدار عددی بین اعدادی که در یک آرایه تعریف شده است را return میکند
سینتکس
1 |
max(numeric_array) or max(numeric_values) |
مثال
1 2 3 4 5 6 7 |
<?php $a=array(23,21,12,34,13); echo "Maximum Value in array = ".max($a)."<br>"; /* output: Maximum Value in array = 34 */ ?> |
تابع min برعکس تابع max() عمل میکند به این معنا که یک آرایه از مقادیر عددی را دریافت و کمترین مقدار عددی را برگشت می دهد .
1 |
Minimum Value in array = 12 |
تابع number_format
تابع number_format مقدار عددی را به اعشار هزار تبدیل می کند که در نمایش قیمت محصولات در فروشگاه ها بسیار مفید و پر کاربرد است .
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $number = 1234.56; echo number_format($number); /* output: 1,235 */ ?> |
توابع سینوس ، کسینوس و تانژانت در php
توابع sin() , cos() , tan() مقدار مقدار سینوس ، کسینوس و تانژانت را محاسبه می کند . همه این توابع یک ورودی را دریافت می کنند.
سینتکس
1 2 3 |
sin(number) cos(number) tan(number) |
مثال
1 2 3 4 5 6 7 8 9 10 |
<?php echo "sin(45) = ".sin(45)."<br>"; echo "cos(45) = ".cos(45)."<br>"; echo "tan(45) = ".tan(45)."<br>"; /* output: sin(45) = 0.85090352453412 cos(45) = 0.52532198881773 tan(45) = 1.6197751905439 */ ?> |
کار با اعداد در php و استفاده از توابع ریاضی در php بسیار کاربردی می باشد . ازهمه توابع بالا معمولا استفاده نمی کنیم ولی توابع خیلی مهمی که در هنگام کار با اعداد در php ممکن است به آن نیاز داشته باشید به صورت زیر لیست شده اند
- تابع ceil
- تابع floor
- تابع number_format
- توابع max و min
امیدوارم از آموزش توابع ریاضی در php (کار با اعداد) لذت برده باشید و بتوانید عملیات ریاضی در php را با سادگی هرچه تمام تر انجام بدید و مطمین باشید در پروژه های فروشگاهی به این توابع نیاز خواهید داشت .
هر سوالی داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
سلام
یک مشکل بزرگ از نظر خودم و کوچک از نظر شما دارم.
این عدد : ۲۵۵۲۴٫۰۰۰۵۴۵۴۰۰ رو تبدیل به این کنم : ۲۵,۵۲۴٫۰۰۰۵۴۵۴ هم سه رقم مثل number_format بشه ولی اگه از number_format استفاده کنم اعشار حذف میشه و اگه تعداد معینی از اعشار بگم هم ممکنه بقیه ی اعشار رو ببره یعنی اعشار گاهی دو رقم و گاهی ده رقم هست و خود اعشار ممکنه آخرشون مثل عدد بالا دو صفر آخر داشته باشه که میخوام اون رو هم حذف کنم یعنی صفرهای آخر اعشار حذف بشه.
ممنون میشم در این مورد کمک کنید.
با تشکر.
سلام یه سوال داشتم من یه برنامه نوشتم ودر دیتا بیس فقط عدد هست و وقتی با اکسل خروجی میگیرم این اعداد که اولشون صفر هست چاپ نمیشه میشه بگید چیکار کنمش
سلام. از کدهای این آموزش استفاده کنید :
https://netparadis.com/export-data-to-excel-in-php
سلام اقای شفیعی وقتتون بخیر
وقتی یه مقداری رو از دیتا فراخوانی میکنم اینطور نمایش میده:
۶٫۰E-5
چطور کاری کنم مثلا نهایت اگه عدد خیلی هم اعشار داره اینجور نمایش داده بشه و همه رو نشون نده:
۱٫۰۰۰۰۰۰۰۹۰۸
سلام. ممنون.
متاسفانه در این مورد اطلاعاتی ندارم مجبورید انگلیسی گوگل کنید
سلام مجدد وقتتون بخیر
از تابع round() استفاده کردم و مشکلم حل شد
ممنون از سایت خوبتون
سلام. ممنون.
خوشحالیم که مفید واقع شده.
موفق باشید.
سلام خسته نباشید من از number_format استفاده کردم در محاسبه قیمت ولی وقتی عدد بالای ۱ میلون میشه ۱۰۰۰ نشون میده ولی عدد کوچیکتر از ۱ میلون رو درست نشون میشده
اینم کدمه
$newSubTotal = number_format((float)Cart::subtotal(),2)*1000 – $discount;
سلام ممنون.
*۱۰۰۰ را باید داخل پارانتر انجام بدید نه خارج از number_format
پس *۱۰۰۰ رو ببرید داخل پارانتز حل میشه :
Cart::subtotal()*1000
اینکارو انجام دادم ولی این ارور رو میده وقتی داخل پرانتز مینویسم
A non well formed numeric value encountered
مثل همیشه عالی
سلام. خوشحالیم که مفید واقع شده.
موفق باشید.
با تشکر از آموزش خیلی مفیدتون!
من یه عدد int دارم که مثلا شده ۲۵,۸۵۰,۱۵۸
چطوری میشه این عدد رو به ۲۶,۰۰۰,۰۰۰ تبدیل کرد؟
سلام. خوشحالیم که مفید واقع شده.
به طور معمول نمی توانید و باید با ترکیب چند تابع round و number_format و جایگزین کردن , با . و همچنین قرار دادن دستی صفر با تابع عدد رو بسازید
ولی برای این مثال شما میتونید از این استفاده کنید :
echo ceil(25850158 / 1000000) * 1000000
ممنون از راهنماییتون
کامنت ویرایش شد و روشی دیگر اضافه شد
عالی . بسیار عالی
ببخشید من خیلی سوال می کنم. یه سوال داشتم که بخوام در php تمامی زیرمجموعه ها عدد برای حساب شود باید چه کار کنم.مثلا برای عدد ۳ برای ما اینو چاپ کنه:
{} و {۳}
و برای عدد ۱۲ اینو چاپ کنه
{}{۲}{۱}{۱,۲}
ممنون میشم اگه پاسخ بدین
سلام. خوشحالیم که مفید واقع شده.
ابتدا عدد را به تابع explode پاس می دید تا آن را به چند بخش هر کدام در یک خانه آرایه قرار و خود آرایه را بری شما برگشت بده
بعد خروجی تابع بالا را می تونید در یک حلقه foreach قرار داده و قبل و بعد آن { و } را اضافه کنید. در نهایت مقداری که توسط foreach ایجاد شده همان خروجی مشابه شما خواهد بود.
موفق باشید.
با تشکر از اموزش و سایت بسیار مفیدتون!
یه سوال، اگه من بخوام عدد ۳۰۰۰۰۰۰ رو به ۳٫۰۰۰٫۰۰۰ تبدیل کنم باید چیکار کنم ؟
( میخوام به تابعم یه عدد بدم و بیاد صدگان و … رو محاسبه کنه و بینشون ” ، ” ویرگوا بذاره! )
با تشکر
سلام . خواهش می کنم خوشحالم که مفید بوده .
برای این کار از تابع number_format به صورت زیر استفاده کنید.
number_format("3000000");
موفق باشید.
مشکلم حل شد! ممنون
خیلی هم عالی . موفق باشید.
ایا اموزش ساختن این دکمه لایک و دیلایک به صورت AJAX رو که برای پست های خودتون هست رو هم دادین؟
بله از
آموزش ساخت سیستم لایک با php و ajax
استفاده کنید
همچنین هر آموزشی که نیاز بود کافیست از قسمت سرچ بالا در سایت جستجو کنید.
موفق باشید
خییلیی خییلیی سپاس گذارم