Toán tử (operator) và biển thức (expresstion)


tự học php cơ bản 10/06/2015 Cùng chuyên mục

Toán tử và biểu thức là thành phần cơ bản của các ngôn ngữ lập trình, làm căn bản cho việc viết các mã lệnh.

Có nhiều loại toán tử trong php. Thường được chia thành các nhóm sau:

  • Nhóm toán tử gán (Assignment Operators ): dùng để gán dữ liệu cho biến
  • Nhóm toán tử số học (Arithmetic Operators) : dùng để thực hiện các phép toán cơ bản
  • Nhóm toán tử với chuỗi (String operators): dùng để nối 2 hay nhiều chuỗi
  • Nhóm toán tử logic (Logic operators): biểu diễn các phép toán logic (luận lý)

Ngoài ra, php còn cung cấp các loại toán tử khác:

  •  bitwise operator: dùng để thao tác trên bit
  •  Error Control operator: bắt lổi
  •  Execution Operators: thực hiện các lệnh hệ thống
  •  Incrementing/Decrementing Operators: tăng / giảm giá trị
  •  Type Operators : Xác định đối tượng

Thuật ngữ: phép toán, toán hạng

Biểu thức là gì?

Biểu thức là một tập hợp các phép toán và toán hạng, nó biểu diễn cho một ý nghĩa nào đó.
Ví dụ: Biểu thức "cộng 2 số a và b".
Trong toán học chúng ta sẽ biểu diễn như sau: a+b
Trong đó, a và b là các toán hạng, + là phép toán
Còn đây là hình thức biểu diễn trong ngôn ngữ lập trình php:

$a+$b;

Toán tử số học

Cho phép biểu diễn các phép toán cơ bản:

Cộng

$a = 1 + 2

Trừ

$b = 5 – 3

Phép nhân

$c = 4*6

Phép chia

$d = 6/3

Lấy phần dư (Modulus)

$div = 5%2

 Tăng lên 1 giá trị: ++Toán tử tăng giảm giá trị:

  •  giảm xuống 1 giá trị: --

Có sự khác biệt giữa việc đặt toán tử này trước hay sau tên biến. Nếu đặt trước tên biến, sẽ tăng giá trị lên trước rồi mới xuất ra biến. Nếu đặt sau, sẽ xuất giá trị ra rồi tăng lên.
Ví dụ:

<?php
	$a = 'test';
	echo ++$a; // sẽ xuất ra 1
?>

đầu tiên, chuỗi test sẽ được chuyển sang giá trị int là 0, sau đó tăng thêm 1 giá trị 0 → 1.

Phép toán nối chuỗi (string concat)

Nối 2 chuỗi bằng phép toán .
Ví dụ:

<?php
//$a = ''foobar''
$str = "foo"."bar"; 
$str2 = "gz";
$st .= $str2;
 //$st = ''foobargz''
?>

Phép toán (.) dùng để nối 2 chuỗi, còn phép toán .= , để ghép giá trị của của biến.

Phép toán gán dữ liệu:

Phép gán ( giá trị biến bằng giá trị được gán ):

$a = 5; //giá trị biến $a là 5

Phép gán và kết hợp với phép toán số học:

$a = 1;
$a += 1; // biến $a = chính nó + thêm 1 giá trị, giá trị bây giờ là 2
$a += 1 tương đương với $a = $a+1;

với kiểu chuỗi sẽ là .= tương tự, với các phép gán kết hợp phép toán số học khác:

$a *= 2; //tương đương $a = $a*2
$a /= 2; //tương đương $a = $a/2

Các phép toán gán với bit: &=, |=, <<=, >>= 

Tham chiếu: 

Thông thường, các phép gán thực hiện việc sao chép giá trị. Nghĩa là sau phép gán ấy, 2 giá trị thuộc 2 biến số tách rời không liên quan gì đến nhau. Tuy nhiên, có thể sử dụng tham chiếu – tương tự như pointer (con trỏ ) trong C ( sao chép địa chỉ )...khi biến được tham chiếu thay đổi giá trị, biến gán sẽ thay đổi giá trị:
Ví dụ:

<?php
$a = 10;
$b = $a;
$b = 20;
echo $a; // kết quả: 10
?>

Sử dụng tham chiếu:

<?php
$a = 10;
$b =&$a;
$b = 20;
echo $a; //kết quả 20
?>

 Phép toán so sánh:

Dùng để thể hiện quan hệ giữa 2 toán hạng

==

Tương đương: nếu 2 giá trị so sánh tương đương sẽ trả ra kết quả true ( boolean value ) - không đồng nghĩa với việc chúng phải giống nhau về kiểu dữ liệu, đồng nghĩa với việc chúng có thể chuyển đổi thành 1 kiểu dữ liệu thông thường và giống nhau.

===

Trả về TRUE nếu 2 giá trị so sánh giống nhau cả về dữ liệu và kiểu dữ liệu

!=

Trả về TRUE nếu 2 giá trị so sánh không tương đương với nhau, mà không cần quan tâm đến dữ liệu

!==

Trả về TRUE, nếu 2 giá trị so sánh khác nhau cả về giá trị lẫn kiểu dữ liệu

Có thể sẽ bị nhầm lẫn giữa phép toán gán và phép so sánh, đảo ngược vị trí dùng để phân biệt đó là phép so sánh thay vì viết: echo $a = =10; // hiểu nhầm là gán, khi ta muốn so sánh hãy viết echo 10 = $a.

Ví dụ: so sánh 2 số $a và $b

//phép gán dữ liệu cho biến $a
$a = 5;
//phép gán dữ liệu cho biến $b 
$b = 6;
//so sánh bằng
var_dump($a == $b); //kết quả: FALSE
var_dump($a < $b); //kết quả: TRUE

 Một số phép toán so sánh khác:

< và <=

Kết quả true nếu toán hạng bên trái nhỏ hơn; hay nhỏ hơn hoặc bằng giá trị bên phải

> và >=

Kết quả true nếu toán hạng bên trái lớn hơn; hay lớn hơn hoặc bằng giá trị bên phải.

Ví dụ: so sánh chuỗi ( dựa trên giá trị nhị phân của nó ):

<?php
$left  = "ABC";
$right = "ABD";
echo (int) ($left > $right); //kết quả trả ra 0 hay false
ký tự D có giá trị nhị phân lớn nhơn ký tự C
$left = ’apple’;
$right = ’Apple’;
echo (int) $left > $right; //kết quả trả ra 1 hay true 
?>

 Phép toán logic: 

Dùng để xác định chân trị đúng hay sai, nó chỉ hoạt động với kiểu boolean, nếu dùng với kiểu khác php sẽ chuyển sang kiểu boolean. 

Có 4 phép toán logic:

! Phép phủ định, nó chỉ có 1 toán hạng đứng phía sau, đùng dễ đảo ngược chân trị của toán hạng.
&& hay AND Phép nối liền, trả về true nếu cả 2 toán hạng bên trái và bên phải đều là true Các trường hợp khác trả về false
|| hay or Phép nối rời, trả về false khi và chỉ khi cả 2 giá trị của các toán hạng trái và phải đều là false.
XOR Trả về giá trị true nếu một trong 2 toán hạng có giá trị là true 

  Ví dụ:

<?php
$a = TRUE;
$b= TRUE;var_dump($a && $b); // kết quả : TRUE
$b= FALSE;
var_dump($a && $b); //kết quả: FALSE
var_dump($a || $b); //kết quả: TRUE
var_dump($a XOR $b); //kết quả: TRUE
var_dump(!$b); //kết quả TRUE 
?>

Tổng kết bài học

Các phép toán là nội dung căn bản trong thực hành php, các bạn cần nắm vững, nhất là:

  • Phép gán
  • Phép toán logic
  • Phép so sánh

Bài này các bạn học cú pháp - khai báo các lệnh đơn. Ở bài kế tiếp các bạn sẽ tìm hiểu tới cấu trúc điều khiển - mang tính tư duy nhiều hơn, trừu tượng hơn. Các câu lệnh không còn riêng rẽ chỉ chạy theo các bước tuần tự thô cứng - có sự điều khiển theo ý muốn của mình, việc lập trình trở nên mềm dẻo hơn, sát với nhu cầu thực tế. 


Bài cùng chuyên mục:




Bình luận:


php php cơ bản