Sau khi hoàn thành chương này, chúng ta sẽ có thể: Trình bày được ý nghĩa của Hằng và cách khai báo Hằng trong PHP, trình bày được ý nghĩa của Biến, cách khai báo Biến trong PHP, phân biệt được sự khác nhau cơ bản giữa Hằng và Biến trong PHP, phân tích được sự khác nhau cơ bản giữa các toán tử trong PHP, ứng dụng Biến, Hằng, Toán tử để áp dụng vào một chương trình cụ thể trong PHP.
CHƯƠNG Ngơn ngữ PHP Các chủ đề Mục tiêu 26 Câu hỏi kiểm tra mở đầu 26 Biến, kiểu liệu 28 1.1 Kiểu liệu 28 1.2 Hằng 29 1.3 Khai báo khởi tạo biến 32 1.4 Các hàm hữu ích cho biến 35 2.Các toán tử 38 2.1 Các toán tử số học 38 2.2 Tốn tử ngơi 38 2.3 Toán tử gán 39 2.4 Toán tử so sánh 39 2.5 Toán tử logic 42 2.6 Toán tử ghép chuỗi 43 2.7 Tốn tử ba ngơi 45 2.8 Các phép toán thao tác mức bit 47 2.9 Các toán tử rút gọn 49 2.10 Các thao tác ưu tiên thao tác kết hợp 50 3.Tổng kết 53 Câu hỏi trắc nghiệm kết chương 54 Mục tiêu Sau hồn thành chương này, có thể: Trình bày ý nghĩa Hằng cách khai báo Hằng PHP Trình bày ý nghĩa Biến, cách khai báo Biến PHP Phân biệt khác Hằng Biến PHP Phân tích khác toán tử PHP Ứng dụng Biến, Hằng, Toán tử để áp dụng vào chương trình cụ thể PHP Câu hỏi kiểm tra mở đầu Trả lời câu hỏi sau Trong ngơn ngữ lập trình, sử dụng Hằng để? a Lưu trữ giá trị không đổi b Lưu trữ giá trị thay đổi c Cả (a) (b) Trong C++ câu lệnh s /= i; tương đương với? a S = i / s; b S = s / i; c Câu lệnh sai d S = i / i; Trong ngơn ngữ lập trình phép tốn 7%2 cho kết quả? a b c d Cho biết kết mã lệnh sau sử dụng ngôn ngữ C++? int a = 5; if(a = 5){ a++; Cout Đoạn mã hiển thị: 1.3 Khai báo khởi tạo biến Cú pháp PHP cú pháp ngôn ngữ C++, làm quen với ngơn ngữ C++ có lợi lập trình PHP Khác với hằng, biến tự động khai báo PHP gán giá trị tới Việc gán giá trị đơn giản cách sử dụng toán tử (=) Chú ý toán tử (=) (==) khác PHP Chúng ta thấy điều phần $num_rows = 10; $product = "Tire Pump"; $price = 22.00; $shipping = 5.00; $total = $price + $shipping; Lừa kiểu ép kiểu Như đề cập phần trước, biến PHP có kiểu liệu Kiểu liệu định cách tự động giá trị mà gán cho biến $a = 1; // $a is an integer $a = 1.2; // Now it's a double $a = "A"; // Now it's a string Khi học phần tiếp theo, có nhiều cách để định rõ ràng kiểu liệu biến Chuyển đổi chuỗi lừa kiểu Nếu thực số thao tác chuỗi ký tự, PHP đánh giá chuỗi ký tự số Điều gọi chuyển đổi chuỗi, biến chứa chuỗi khơng cần thiết thay đổi Trong ví dụ sau, $str gán giá trị chuỗi ký tự: $str = "222B Baker Street"; Nếu cố gắng tăng thêm giá trị nguyên vào $str, $str đánh giá với số nguyên 222 để phục vụ mục đích tính tốn: $x = + $str; // $x = 225; Nhưng biến $str không thay đổi: echo ($str); // Prints: "222B Baker Street" Chuyển đổi chuỗi theo sau cặp luật: Chỉ phần đầu chuỗi đánh giá số Nếu chuỗi bắt đầu với giá trị số hợp lệ, chuỗi đánh giá giá trị đó; ngồi đánh giá Chuỗi “3rd degree” đánh giá sử dụng toán tử số chuỗi “Catch 22” đánh giá Một chuỗi đánh giá số thực giá trị số thực mô tả bao gồm toàn chuỗi ký tự Các chuỗi “3.14”, “-4.01” “4.2e6” đánh giá số thực 3.4, -4.01 4.2000000 Tuy nhiên ký tự khác khơng phải số thực có chuỗi, chuỗi đánh giá số nguyên: “3.4 children” đánh giá số nguyên Chuỗi “-4.01 degree” đánh giá số nguyên -4 Ngoài việc chuyển đổi chuỗi, PHP thực lừa kiểu hai kiểu số Nếu thực thao tác số số thực số nguyên, kết số thực: $a = 1; // $a số nguyên $b = 1.0; // $b số thực $c = $a + $b; // $c số thực (value 2.0) $d = $c + "6th"; // $d số thực (value 8.0) Ép kiểu Ép kiểu cho phép thay đổi dứt khoát kiểu liệu biến: $a = 11.2; // $a số thực $a = (int) $a // Bây số nguyên (value 11) $a = (double) $a 11.0) $b = (string) $a // Bây trở lại số thực (value // $b chuỗi ký tự (value "11") Mảng đối tượng phép Integer giống với int float real giống với double Biến động PHP hỗ trợ biến động (variable variables) Các biến thơng thường có giá trị động: Chúng ta thiết lập thay đổi giá trị biến Với biến động, tên biến động Biến động thường tạo nhiều nhầm lẫn tiện lợi (đặc biệt sử dụng mảng) Chúng ta thường sử dụng biến động thực tế chúng mang lại lợi ích Đây ví dụ biến động $field = "ProductID"; $$field = "432BB"; Dòng đoạn mã tạo biến $field gán giá trị “ProductID” Dòng thứ hai sử dụng giá trị biến để tạo tên biến thứ hai Biến thứ hai có tên $ProductID có giá trị “432BB” Hai dòng mã lệnh sau thực thi để hiển thị này: echo ($ProductID); // In ra: 432BB echo ($$field); // In ra: 432BB Tốn tử Ví dụ Đánh giá true Bằng $h == $i $h $i có giá trị < Nhỏ $h < $i $h nhỏ $i > Lớn $h > $i $h lớn $i == Nghĩa = $i $h lớn $i != Không $h != $i $h không $i Không $h $i $h không $i Một lần nữa, nhớ toán tử so sánh hai dấu (==), dấu đơn (=) đại diện cho toán tử gán Toán tử gán sử dụng để thiết lập giá trị biến, toán tử so sánh sử dụng để xác định kiểm tra giá trị biến Trong toán tử so sánh sử dụng để định kiểm tra giá trị biến Sự Thất bại để quan sát phân biệt dẫn tới kết bất ngờ Ví dụ, viết nhầm: $i = 4; if ($i = 7) echo ("seven"); // "seven" in ra! Đây luật hoàn toàn hợp lý PHP, không thấy thông báo lỗi Tuy nhiên, câu lệnh if không kiểm tra giá trị $i có khơng Thực tế, gán giá trị cho $i sau đánh giá 7, số khác true Khi lỗi phát sinh, khó để dị tìm Một cách tổng quát, bắt gặp câu lệnh if mà đánh giá true đánh giá false bất chấp điều kiện, hội tốt để sử dụng = thay cho == Trong mã lệnh sau, viết xác: $i = 4; if (7 == $i) echo ("seven"); // == $i đánh giá false, câu lệnh echo không thực thi Ở sử dụng toán tử gán tốn tử so sánh Ngồi ra, đặt giá trị thật bên trái biến bên phải Thói quen tạo cho nhiều khó khăn để tạo lỗi tương lai: Nếu viết sai = $i, PHP cố gắng gán giá trị biến $i Điều rõ ràng xảy ra, lỗi tạo ra: Chú ý lừa kiểu chuyển đổi kiểu xảy so sánh; điều có nghĩa hai biến có giá trị giống sau chuyển đổi kiểu, PHP xem xét chúng để có giá trị giống dù chúng có kiểu liệu khác Ví dụ: echo ("7" == 7.00); Mã hiển thị số biểu thức “7” == 7.00 đánh giá true Trong hầu hết trường hợp thực tế, kết Nếu cần tạo khác biệt biến chứa “7” biến chứa “7.00”, phải so sánh giá trị kiểu biến: $a = "7"; $b = 7.00; echo ($a == $b); // In (true) echo (($a == $b) and (gettype ($a) == gettype ($b))); // In (false) 2.5 Toán tử logic Toán tử logic dùng để kết hợp điều kiện, nhiều điều kiện đánh giá với biểu thức đơn ‘Logical and’ trả true tất điều kiện thỏa mãn; ‘logical or’ trả true nhiều điều kiện thỏa mãn Toán tử logic cuối cùng, ‘logical not’ trả true biểu thức theo sau đánh giá false Ví dụ Tên toán tử Đánh giá true $h && $i And Cả $h $i đánh giá true $h || $i Or Một $h $i đánh giá true $h and $i And Cả $h $i đánh giá true $h or $i Or $h $i là $h xor $i Or loại trừ Một $h $i đánh giá đúng, không ! $h Not $h không đánh giá true Chú ý có hai tốn tử “and” hai toán tử “or” Chúng hành xử giống thứ tự khác Điều có nghĩa chúng thực thi thứ tự khác biểu thức chứa nhiều tốn tử Những ví dụ sau nên làm cho tính hữu ích toán tử rõ ràng Những kết định sẵn dựa giá trị sau: $h == 4; $i == 5; $j == 6: if ($h == && $i == && $j == 6) echo ("Sẽ in ra."); Trong trường hợp này, tất điều kiện true, hàm echo thực thi if ($h == or $i == 5) echo ("Sẽ in ra."); Đoạn mã trên, điều kiện ($h == 3) đánh giá false điều kiện thứ hai ($i == 5) true Bởi số điều kiện liên kết ‘or’ true, biểu thức đánh giá true if !($h == && $i == 5) echo ("Sẽ khơng in ra."); Ví dụ điển hình tốn tử “not” Biểu thức ($h == && $i == 5) đánh giá true, phủ định với !, biểu thức trở thành false Dòng thành phần ngoặc đơn sử dụng để liên kết số điều kiện để tránh lỗi thứ tự trước sau Một ví dụ cuối điều hữu ích nào: if (($h == || $i == 4) xor ($h == || $j == 5) xor ($i == || $j == 7)) echo ("Sẽ in ra"); 2.6 Toán tử ghép chuỗi Chúng ta thấy phần II mục dấu chấm (.) sử dụng PHP toán tử ghép kết nối hai nhiều giá trị chuỗi vào thành chuỗi đơn // Mã lệnh sau in "Phineas Phop" $first = "Phineas"; $last = "Phop"; $full = $first " " $last; // Tên cộng với khoảng trống cộng với tên sau echo ($full); // Mã lệnh sau in "Phop's Bicycles" $last = "Phop"; echo ($last "'s Bicycles"); Kiến thức tốn tử ghép khơng phải cách để xây dựng chuỗi sử dụng liệu biến Khi tìm hiểu Phần II mục 1, PHP nội suy cách tự động biến chuỗi chuỗi in sai bên dấu ngoặc kép đơi Do vậy, hai dịng sau hiển thị Phineas Phop: echo ($first " " $last); // Sử dụng ghép echo ("$first $last"); // Sử dụng nội suy Dịng thứ hai có hiệu suất cao kiểu thực thi Tương tự, “Phop’s Bicycles” in cách sử dụng dịng: echo ("$last's Bicycles"); Trong ví dụ PHP biết tên biến $last khơng phải $last’s dấu nháy (‘) ký tự hợp pháp từ định danh (Xem phần ‘Từ định danh’ phần trước) Chúng ta làm vấn đề giống muốn in dịng Phop4bikes: echo ("$last4bikes"); // Khơng in gì! Sẽ khơng in cả, PHP nghĩ thử in giá trị biến có tên $last4bikes mà khơng phải giá trị $last theo sau số chuỗi “bikes” Để sửa điều này, sử dụng toán tử ghép để thay cách ly tên biến sử dụng dấu ngoặc nhọn, toán tử $ biết ký tự thành phần biến: echo ("${last}4bikes"); // in Phop4bikes Toán tử ghép thường sử dụng để thu thập chuỗi lớn – chẳng hạn truy vấn sở liệu – phần tách lần: // Mã lệnh sau tạo truy vấn SQL $sql_query = "SELECT Position, Location " "FROM JobOpenings " "WHERE Salary > 60000 " "ORDER BY Location"; Hãy cẩn thận sử dụng toán tử ghép với chuỗi số: echo ("4" "5"); // In 45 echo (4 ); // In 45 (Với khoảng trống: // Giàng buộc chuỗi "4" "5".) echo (4.5); // In 4.5 (Không khoảng trống: // PHP hiểu số thực tốn tử ghép!) 2.7 Tốn tử ba ngơi Cho đến bây giờ, tất toán tử thảo luận gồm có tốn tử ngơi hai ngơi Tốn tử ngơi (chẳng hạn !) thực thao tác với giá trị toán hạng Toán tử ! đánh giá đối nghịch giá trị boolean tốn hạng Nếu $a đánh giá false ! $a đánh giá true Tốn tử hai ngơi (chẳng hạn =) sử dụng để thực thao tác hai toán hạng: $a = $b lấy giá trị tốn hạng ($b) gán giá trị cho toán hạng khác ($a) Chúng ta thấy biểu thức gồm giá trị (chẳng hạn $a = $b + $c) biểu thức thường có tốn tử mơ tả tốn tử thực (đầu tiên phép cộng, sau phép gán, ví dụ này) Có tốn tử ba ngơi Một tốn tử ba ngơi thực thao tác đơn giá trị khác Toán tử ? : thường ám tới “tốn tử ba ngơi” “tốn tử điều kiện” Nó sử dụng để kiểm tra điều kiện Boolean trả hai giá trị Việc xây dựng gồm có ba phần: Một điều kiện Boolean trước dấu hỏi (?), giá trị ? dấu hai chấm (:) (nó trả điều kiện true) giá trị sau dấu hai chấm (nó trả điều kiện false) $a == ? "zero" : "not zero" Trong ví dụ này, toán hạng điều kiện Boolean $a == Nếu điều kiện tìm thấy true, thao tác trả chuỗi “zero” Ngược lại trả chuỗi “not zero” Tốn hạng phải ln tương ứng với giá trị Boolean Hai toán hạng khác kiểu liệu Tốn tử ban cách viết tắt câu lệnh if else Câu lệnh: if ($positions > 1) { $title = "Available Bicycle Repair Positions"; } else { $title = "Available Bicycle Repair Position"; } Có thể thay bởi: $title = "Available Bicycle Repair " ($positions > ? "Positions" : "Position"); 2.8 Các phép toán thao tác mức bit Các phép toán thao tác mức bit sử dụng PHP Chúng cho phép so sánh mức thấp thao tác số nhị phân Các toán tử thao tác mức bit sử dụng để so sánh giá trị nhị phân bit lần Chúng thực toán tử tương tự and, or, xor not tập bit Để làm điều rõ ràng hơn, khảo sát ví dụ sử dụng tốn tử &, đánh giá bit tốn hạng thực Boolean AND chúng Số thập phân mô tả 110 dãy nhị phân mô tả 101 Nếu đánh giá & 5: echo( // 110 & // 101 ); // equals = 100 Bit quan trọng Do vậy, PHP so sánh & 1, tương ứng với biểu thức logic true && true Vậy biểu thức lôgic đánh giá true, bit kết tập Khi khảo sát bit thứ toán hạng, thấy & đánh giá false bit kết tập Tương tự, bit thứ ba, kết Do kết cuối 100, tương ứng với số thập phân vậy, & Nếu bị nhầm lẫn điều này, tin tức tốt lành chẳng cần PHP Các toán tử thao tác bit tổng kết bảng sau: Toán tử & | ^ >> > (10 nhị phân) 11 (1011 nhị phân) thực đánh giá dịch trái Toán tử phủ định thao tác bit (~) thay đổi bit tốn hạng để đảo ngược giá trị 2.9 Các toán tử rút gọn Giống ngơn ngữ lập trình khác, thực PHP tốn tử rút gọn cho câu lệnh gán nơi mà toán hạng biến kết lưu trữ biến Bảng danh sách tốn tử rút gọn: Ví dụ Tương đương với: $h += $i $h = $h + $i $h -= $i $h = $h - $i $h *= $i $h = $h * $i $h /= $i $h = $h / $i $h %= $i $h = $h % $i $h &= $i $h = $h & $i $h |= $i $h = $h | $i $h ^= $i $h = $h ^ $i $h = $i $h = $h $i $h >>=2 $h = $h >> $h < ?php phpinfo() ?> Đoạn mã hiển thị: 1.3 Khai báo khởi tạo biến Cú pháp PHP cú pháp ngôn ngữ C++, làm quen với ngơn ngữ C++ có lợi lập trình PHP Khác... tả + Phép cộng + Tính tổng 2: – Phép trừ – * Phép nhân * Tính tích 2: 14 / Phép chia / Phép chia 2: 3.5 % Chia lấy dư % Tính phần dư phép chia 2: Tính hiệu trừ 2: PHP thường không để ý đến ký... hoàn thành chương này, có thể: Trình bày ý nghĩa Hằng cách khai báo Hằng PHP Trình bày ý nghĩa Biến, cách khai báo Biến PHP Phân biệt khác Hằng Biến PHP Phân tích khác toán tử PHP Ứng