Các phép toán trong PHP
Trong hướng dẫn này, bạn sẽ học cách thực hiện các phép toán trong PHP.
Thực hiện các phép toán
PHP có một số hàm tích hợp sẵn giúp bạn thực hiện bất kỳ điều gì từ phép cộng hoặc phép trừ đơn giản đến các phép tính nâng cao. Bạn đã biết cách thực hiện các phép toán cơ bản trong chương Toán tử trong PHP. Hãy xem thêm một ví dụ:
Ví dụ
<?php
echo 7 + 3; // Kết quả: 10
echo 7 - 2; // Kết quả: 5
echo 7 * 2; // Kết quả: 14
echo 7 / 2; // Kết quả: 3.5
echo 7 % 2; // Kết quả: 1
?>
Mọi phép toán đều có một mức độ ưu tiên nhất định; nói chung phép nhân và phép chia được thực hiện trước khi cộng và trừ. Tuy nhiên, dấu ngoặc đơn có thể thay đổi mức độ ưu tiên này; các biểu thức nằm trong dấu ngoặc đơn luôn được đánh giá đầu tiên, bất kể mức độ ưu tiên của hoạt động như thế nào, như được minh họa trong ví dụ sau:
Ví dụ
<?php
echo 5 + 4 * 10; // Kết quả: 45
echo (5 + 4) * 10; // Kết quả: 90
echo 5 + 4 * 10 / 2; // Kết quả: 25
echo 8 * 10 / 4 - 2; // Kết quả: 18
echo 8 * 10 / (4 - 2); // Kết quả: 40
echo 8 + 10 / 4 - 2; // Kết quả: 8.5
echo (8 + 10) / (4 - 2); // Kết quả: 9
?>
Trong phần sau, chúng ta sẽ xem xét một số hàm PHP tích hợp thường được sử dụng để thực hiện các phép toán.
Tìm giá trị tuyệt đối của một số
Giá trị tuyệt đối của một số nguyên hoặc một số thực có thể được tìm thấy với các hàm abs()
, như thể hiện trong ví dụ sau:
Ví dụ
<?php
echo abs(5); // Kết quả: 5 (integer)
echo abs(-5); // Kết quả: 5 (integer)
echo abs(4.2); // Kết quả: 4.2 (double/float)
echo abs(-4.2); // Kết quả: 4.2 (double/float)
?>
Như bạn có thể thấy nếu số đã cho là số âm, thì giá trị được trả về là số dương. Nhưng, nếu số là số dương, hàm này chỉ trả về số đó.
Làm tròn giá trị phân số lên hoặc xuống
Hàm ROUND(): Dùng để làm tròn với theo tùy chọn số chữ số sau dấu thập phân, Hàm ceil()
có thể được sử dụng để làm tròn một giá trị phân số lên đến giá trị số nguyên cao nhất tiếp theo, trong khi hàm floor()
có thể được sử dụng để làm tròn một giá trị phân số xuống đến giá trị số nguyên thấp nhất tiếp theo, như thể hiện trong ví dụ sau:
Ví dụ
<?php
echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); // 4
echo round(3.6, 0); // 4
echo round(1.95583, 2); // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2); // 5.05
echo round(5.055, 2); // 5.06
echo round(9.5, 0, PHP_ROUND_HALF_UP); // 10
echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10
echo round(9.5, 0, PHP_ROUND_HALF_ODD); // 9
echo round(8.5, 0, PHP_ROUND_HALF_UP); // 9
echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_ODD); // 9
/* Using PHP_ROUND_HALF_UP with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_UP); // 1.6
echo round( 1.54, 1, PHP_ROUND_HALF_UP); // 1.5
echo round(-1.55, 1, PHP_ROUND_HALF_UP); // -1.6
echo round(-1.54, 1, PHP_ROUND_HALF_UP); // -1.5
/* Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_DOWN); // 1.5
echo round( 1.54, 1, PHP_ROUND_HALF_DOWN); // 1.5
echo round(-1.55, 1, PHP_ROUND_HALF_DOWN); // -1.5
echo round(-1.54, 1, PHP_ROUND_HALF_DOWN); // -1.5
/* Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_EVEN); // 1.6
echo round( 1.54, 1, PHP_ROUND_HALF_EVEN); // 1.5
echo round(-1.55, 1, PHP_ROUND_HALF_EVEN); // -1.6
echo round(-1.54, 1, PHP_ROUND_HALF_EVEN); // -1.5
/* Using PHP_ROUND_HALF_ODD with 1 decimal digit precision */
echo round( 1.55, 1, PHP_ROUND_HALF_ODD); // 1.5
echo round( 1.54, 1, PHP_ROUND_HALF_ODD); // 1.5
echo round(-1.55, 1, PHP_ROUND_HALF_ODD); // -1.5
echo round(-1.54, 1, PHP_ROUND_HALF_ODD); // -1.5
// Làm tròn lên
echo ceil(4.2); // Kết quả: 5
echo ceil(9.99); // Kết quả: 10
echo ceil(-5.18); // Kết quả: -5
// Làm tròn xuống
echo floor(4.2); // Kết quả: 4
echo floor(9.99); // Kết quả: 9
echo floor(-5.18); // Kết quả: -6
?>
Tìm căn bậc hai của một số
Bạn có thể sử dụng hàm sqrt()
để tìm căn bậc hai của một số dương. Hàm này trả về một giá trị đặc biệt NAN cho các số âm. Đây là một ví dụ:
Ví dụ
<?php
echo sqrt(9); // Kết quả: 3
echo sqrt(25); // Kết quả: 5
echo sqrt(10); // Kết quả: 3.1622776601684
echo sqrt(-16); // Kết quả: NAN
?>
Tạo một số ngẫu nhiên
Hàm rand()
có thể được sử dụng để tạo ra một số ngẫu nhiên. Bạn có thể tùy ý chỉ định một phạm vi bằng cách chuyển các đối số tối thiểu, tối đa, như được hiển thị trong ví dụ sau:
Ví dụ
<?php
// Tạo ra một số ngẫu nhiên
echo rand() . "<br>";
echo rand() . "<br>";
// Tạo số ngẫu nhiên từ 1 đến 10 (bao gồm cả 2 số)
echo rand(1, 10) . "<br>";
echo rand(1, 10) . "<br>";
?>
Nếu hàm rand()
được gọi mà không có sự bắt buộc min, max, nó trả về một số giả ngẫu nhiên giữa 0 và getrandmax()
. Hàm getrandmax()
hiển thị các giá trị ngẫu nhiên lớn nhất có thể, đó chỉ là 32767 trên nền tảng Windows. Vì vậy, nếu bạn yêu cầu một phạm vi lớn hơn 32767, bạn có thể chỉ cần chỉ định các đối số min và max.
Chuyển đổi số thập phân thành nhị phân và ngược lại
Hàm decbin()
được sử dụng để chuyển đổi một số thập phân sang số nhị phân. Trong khi bản sao của nó, hàm bindec()
chuyển đổi một số từ nhị phân sang thập phân.
Ví dụ
<?php
// Convert Decimal to Binary
echo decbin(2); // Kết quả: 10
echo decbin(12); // Kết quả: 1100
echo decbin(100); // Kết quả: 1100100
// Convert Binary to Decimal
echo bindec(10); // Kết quả: 2
echo bindec(1100); // Kết quả: 12
echo bindec(1100100); // Kết quả: 100
?>
Chuyển đổi số thập phân sang thập lục phân và ngược lại
Hàm dechex()
được sử dụng để chuyển đổi một số thập phân thành thập lục phân. Trong khi đó, hàm hexdec()
được sử dụng để chuyển đổi một chuỗi thập lục phân thành một số thập phân.
Ví dụ
<?php
// Convert decimal to hexadecimal
echo dechex(255); // Kết quả: ff
echo dechex(196); // Kết quả: c4
echo dechex(0); // Kết quả: 0
// Convert hexadecimal to decimal
echo hexdec('ff'); // Kết quả: 255
echo hexdec('c4'); // Kết quả: 196
echo hexdec(0); // Kết quả: 0
?>
Chuyển đổi số thập phân sang bát phân và ngược lại
Hàm decoct()
được sử dụng để chuyển đổi một số thập phân sang bát phân. Trong khi đó, hàm octdec()
được sử dụng để chuyển đổi một số bát phân thành một số thập phân.
Ví dụ
<?php
// Convert decimal to octal
echo decoct(12); // Kết quả: 14
echo decoct(256); // Kết quả: 400
echo decoct(77); // Kết quả: 115
// Convert octal to decimal
echo octdec('14'); // Kết quả: 12
echo octdec('400'); // Kết quả: 256
echo octdec('115'); // Kết quả: 77
?>
Chuyển đổi một số từ Hệ thống cơ sở này sang Hệ thống cơ sở khác
Hàm base_convert()
có thể được sử dụng để chuyển đổi một số từ một hệ thống cơ sở để khác. Ví dụ: bạn có thể chuyển đổi hệ thập phân ( cơ số 10 ) sang nhị phân ( cơ số 2 ), thập lục phân ( cơ số 16 ) thành bát phân ( cơ số 8 ), bát phân sang thập lục phân, thập lục phân thành thập phân, v.v.
Hàm này chấp nhận ba tham số: số cần chuyển đổi, cơ sở mà nó đang ở và cơ sở mà nó sẽ được chuyển đổi. Cú pháp cơ bản như sau:
base_convert (number, frombase, tobase);
Ở đây, số có thể là một số nguyên hoặc một chuỗi đại diện cho một số nguyên. Cả hai frombase và tobase phải từ 2 đến 36, bao gồm cả. Các chữ số trong các số có cơ số lớn hơn 10 sẽ được biểu thị bằng các chữ cái az, trong đó a có nghĩa là 10, b nghĩa là 11 và z có nghĩa là 35. Dưới đây là một ví dụ đơn giản để hiển thị cách hoạt động của hàm này:
Ví dụ
<?php
// Chuyển đổi thập phân sang nhị phân
echo base_convert('12', 10, 2); // Kết quả: 1100
// Chuyển đổi nhị phân sang thập phân
echo base_convert('1100', 2, 10); // Kết quả: 12
// Chuyển đổi thập phân sang thập lục phân
echo base_convert('10889592', 10, 16); // Kết quả: a62978
// Chuyển đổi thập lục phân sang thập phân
echo base_convert('a62978', 16, 10); // Kết quả: 10889592
// Chuyển đổi thập phân sang bát phân
echo base_convert('82', 10, 8); // Kết quả: 122
// Chuyển đổi bát phân sang thập phân
echo base_convert('122', 8, 10); // Kết quả: 82
// Thập lục phân sang bát phân
echo base_convert('c2c6a8', 16, 8); // Kết quả: 60543250
// Chuyển đổi bát phân sang thập lục phân
echo base_convert('60543250', 8, 16); // Kết quả: c2c6a8
// Bát phân sang nhị phân
echo base_convert('42', 8, 2); // Kết quả: 100010
// Nhị phân sang bát phân
echo base_convert('100010', 2, 8); // Kết quả: 42
// Chuyển đổi hệ thập lục phân sang nhị phân
echo base_convert('abc', 16, 2); // Kết quả: 101010111100
// Nhị phân sang thập lục phân
echo base_convert('101010111100', 2, 16); // Kết quả: abc
?>
Ghi chú: Hàm base_convert()
sẽ luôn trả về một giá trị chuỗi. Nếu giá trị trả về nằm trong cơ số 10, chuỗi kết quả có thể được sử dụng như một chuỗi số trong các phép tính và PHP sẽ chuyển đổi nó thành một số khi phép tính được thực hiện.