
אריתמטיקה וחישובים מתמטיים ב-PHP
פעולות אריתמטיות משמשות לביצוע חישובים כגון חיבור, חיסור, כפל וחילוק. PHP מספקת אופרטורים שונים ופונקציות מובנות לטיפול בפעולות אלו, דבר שמקל על ביצוע חישובים מתמטיים.
שפת PHP תומכת באופרטורים אריתמטיים סטנדרטיים, שניתן להשתמש בהם עם מספרים, משתנים וביטויים.
אופרטור | תאור |
---|---|
+ | חיבור |
- | חיסור |
* | כפל |
/ | חילוק |
% | מודולוס (שארית החלוקה) |
** | חזקה |
דוגמה:
<?php
$a = 10;
$b = 3;
echo $a + $b; // Output: 13
echo $a - $b; // Output: 7
echo $a * $b; // Output: 30
echo $a / $b; // Output: 3.3333333333333
echo $a % $b; // Output: 1
echo $a ** $b; // Output: 1000 (10 raised to the power of 3)
?>
סדר פעולות החשבון הוא משמאל לימין, כאשר ניתנת עדיפות קודם כל לסוגריים ולאופרטורים בעלי עדיפות גבוהה יותר (אלו משוערכים לפני יתר האופרטורים).
דוגמה:
<?php
$result = 10 + 5 * 2; // Multiplication has higher precedence
echo $result; // Output: 20
$result = (10 + 5) * 2; // Parentheses change the precedence
echo $result; // Output: 30
?>
פונקציות מתמטיות נפוצות ב-PHP
PHP מספקת פונקציות מובנות רבות לביצוע פעולות מתמטיות נפוצות.
נסקור להלן כמה מהפונקציות המתמטיות שכדאי להכיר.
פונקציות יסוד במתמטיקה
- abs($number) - מחזיר את הערך המוחלט של מספר.
- sqrt($number) - מחזיר את השורש הריבועי של מספר.
- pow($base, $exp) - מעלה מספר בחזקת מספר אחר.
דוגמה:
<?php
echo abs(-5); // Output: 5
echo sqrt(16); // Output: 4
echo pow(2, 3); // Output: 8
?>
עיגול מספרים
- round($number, $precision) - עיגול מספר לפי דיוק מוגדר (precision). אם הפרמטר percision מושמט, העיגול הוא למספר השלם הקרוב ביותר.
- floor($number) - עיגול מטה למספר השלם הקרוב ביותר.
- ceil($number) - עיגול מעלה למספר השלם הקרוב ביותר.
דוגמה:
<?php
echo round(4.567, 2); // Output: 4.57
echo floor(4.9); // Output: 4
echo ceil(4.1); // Output: 5
?>
מינימום ומקסימום
- min($value1, $value2, ...) - מוצא את הערך המינימלי מבין כל הארגומנטים שהועברו. אין הגבלה על כמות הארגומנטים המועברים.
- max($value1, $value2, ...) - מוצא את הערך המקסימלי מבין כל הארגומנטים שהועברו. אין הגבלה על כמות הארגומנטים המועברים.
דוגמה:
<?php
echo min(2, 3, 1, 6, -1); // Output: -1
echo max(2, 3, 1, 6, -1); // Output: 6
?>
מספרים רנדומליים
- rand - יוצר מספר שלם אקראי.
- random_int($min, $max) - יוצר מספר שלם אקראי בתחום נתון. הפונקציה מפיקה מספרים בצורה מאובטחת מבחינה קריפטוגרפית, כלומר, ניתן להתבסס על המספרים שהיא מחזירה כמפתחות בהצפנה.
דוגמה:
<?php
echo rand(1, 10); // Output: Random number between 1 and 10
echo random_int(100, 200); // Output: Secure random number between 100 and 200
?>
פונקציות טריגונומטריות
- sin($angle) - סינוס של זווית שניתנת ברדיאנים.
- cos($angle) - קוסינוס של זווית שניתנת ברדיאנים.
- tan($angle) - טנגנס של זווית שניתנת ברדיאנים.
- asin($num) - ארק-סינוס (פונקציית סינוס הפוכה) למספר נתון.
- acos($num) - ארק-קוסינוס (פונקציית קוסינוס הפוכה) למספר נתון.
- atan($num) - ארק-טנגנס (פונקציית טנגנס הפוכה) למספר נתון.
- deg2rad($num) - הופך מעלות לרדיאנים.
- rad2deg($num) - הופך רדיאנים למעלות.
דוגמה:
<?php
echo sin(M_PI / 2); // Output: 1
echo cos(M_PI); // Output: -1
echo tan(M_PI / 4); // Output: 1
echo asin(1); // Output: 1.5707963267949 (π/2 radians)
echo acos(-1); // Output: 3.1415926535898 (π radians)
echo atan(1); // Output: 0.78539816339745 (π/4 radians)
echo deg2rad(180); // Output: 3.1415926535898 (π radians)
echo rad2deg(M_PI); // Output: 180
?>
פונקציה מעריכית ולוגריתם
- exp($value) - מעריכי של מספר (e^value).
- log($value, $base) - לוגריתם של מספר עם בסיס אופציונלי.
דוגמה:
<?php
echo exp(1); // Output: 2.718281828459 (value of e)
echo log(100, 10); // Output: 2 (log base 10 of 100)
?>
טיפול בערכים מתמטיים מיוחדים
שפת PHP מגדירה כמה ערכים מתמטיים מיוחדים:
- NaN - אינו מספר (Not a Number). ערך זה מייצג מספר שאינו מוגדר או שאינו ניתן לייצוג.
- INF - אינסוף. מתקבל בחישובים שהתוצאה שלהם היא מספר גבוה מאוד ש-PHP לא יודעת לייצג, או מחלוקת מספר חיובי באפס.
- INF- - מינוס אינסוף. מתקבל בחישובים שהתוצאה שלהם היא מספר נמוך מאוד ש-PHP לא יודעת לייצג, או מחלוקת מספר שלילי באפס.
- 0- - מינוס אפס. מספר זה זהה למספר 0 מבחינה מתמטית. הוא מתקבל לעיתים כתוצאה של חישוב המבוסס על נקודה צפה (אי דיוק בהצגת אפס, והצגה של ערך קרוב מאוד לאפס מהצד השלילי של ציר המספרים).
- PHP_FLOAT_MAX - מספר הנקודה הצפה הגבוה ביותר ש-PHP יודעת לייצג. תוצאות מתמטיות שנותנות מספר הגבוה ממספר זה יחשבו כאינסוף (INF).
- PHP_FLOAT_MIN - מספר הנקודה הצפה הנמוך ביותר ש-PHP יודעת לייצג. תוצאות מתמטיות שנותנות מספר הנמוך ממספר זה יחשבו כמינוס אינסוף (INF-).
השפה גם מגדירה מספר פונקציות שיודעות לטפל בערכים מתמטיים אלו:
- is_nan($value) - בודק אם ערך הוא NaN.
- is_infinite($value) - בודק אם ערך הוא אינסופי (ערך INF או INF-).
דוגמה:
<?php
// NaN
$nanValue = sqrt(-1);
var_dump($nanValue); // Output: float(NAN)
if (is_nan($nanValue)) {
echo "The value is Not a Number (NaN).";
}
// INF
$positiveInf = 1 / 0;
var_dump($positiveInf); // Output: float(INF)
// -INF
$negativeInf = -1 / 0;
var_dump($negativeInf); // Output: float(-INF)
// Devision by zero
$numerator = 10;
$denominator = 0;
$result = $numerator / $denominator;
var_dump($result); // Output: float(INF) with a warning
// Zero and negative zero
$zero = 0;
$negativeZero = -0.0;
var_dump($zero === $negativeZero); // Output: bool(true)
// Floating point percision problem
$result = 0.1 + 0.2;
var_dump($result); // Output: float(0.30000000000000004)
// Floating point percision solution (using round)
echo round($result, 2); // Output: 0.3
// Overflow (PHP_FLOAT_MAX)
$largeNumber = PHP_FLOAT_MAX * 2;
var_dump($largeNumber); // Output: float(INF)
// Underflow (PHP_FLOAT_MIN)
$smallNumber = PHP_FLOAT_MIN / 2;
var_dump($smallNumber); // Output: float(0)
?>
שימוש בקבועים מתמטיים
PHP מגדירה קבועים עבור ערכים מתמטיים נפוצים. קבועים אלה שימושיים במיוחד בחישובים מתמטיים, מכיוון שהם מספקים ערכים מדויקים למספרים בשימוש תכוף בחישובים מתמטיים ומדעיים שונים. שימוש בקבועים אלה משפר את קריאות הקוד, הדיוק של הקוד ומהירות הביצוע של הקוד.
להלן כמה מהקבועים המתמטיים שבשימוש נפוץ ב-PHP:
- M_PI - הערך של π (pi).
- M_PI_2 - הערך של פאי חלקי 2.
- M_PI_4 - הערך של פאי חלקי 4.
- M_1_PI - הערך של 1 חלקי פאי.
- M_2_PI - הערך של 2 חלקי פאי.
- M_SQRTPI - הערך של השורש הריבועי של פאי.
- M_2_SQRTPI - הערך של 2 חלקי השורש הריבועי של פאי.
- M_E - הערך של e (המספר של אוילר).
- M_LOG2E - הערך של לוגריתם של e בבסיס 2.
- M_LOG10E - הערך של לוגריתם של e בבסיס 10.
- M_LN2 - הערך של לוגריתם טבעי בבסיס 2.
- M_LN10 - הערך של לוגריתם טבעי בבסיס 10.
- M_SQRT2 - הערך של השורש הריבועי של 2.
- M_SQRT3 - הערך של השורש הריבועי של 3.
- M_SQRT1_2 - הערך של 1 חלקי השורש הריבועי של 2.
דוגמה:
<?php
echo M_PI; // Output: 3.1415926535898
echo M_PI_2; // Output: 1.5707963267949
echo M_PI_4; // Output: 0.78539816339745
echo M_1_PI; // Output: 0.31830988618379
echo M_2_PI; // Output: 0.63661977236758
echo M_2_SQRTPI; // Output: 1.1283791670955
echo M_SQRTPI; // Output: 1.77245385091
echo M_E; // Output: 2.718281828459
echo M_LOG2E; // Output: 1.442695040889
echo M_LOG10E; // Output: 0.43429448190325
echo M_LN2; // Output: 0.69314718055995
echo M_LN10; // Output: 2.302585092994
echo M_SQRT2; // Output: 1.4142135623731
echo M_SQRT3; // Output: 1.7320508075689
echo M_SQRT1_2; // Output: 0.70710678118655
?>