Hình 2.14. Hoạt động của Include
Tuy là cùng dùng chung cho một mục đích chính là chèn một file .php vào file php hiện tại. Nhưng include và require khác nhau về cách vận hành.
2.8.1. Sử dụng Include
include – đúng với cái tên của nó. Nó có nhiệm vụ chèn file php vào vị trí mà dòng include được thực thi. Hơn nữa ta còn có thể include một file nhiều lần.
Cách sử dụng hàm include include "file.php"; include "tenfile.php";
Ta thể hình dung là, toàn bộ nội dung của file.php sẽ được thay cho dòng include “file.php” trong code ở trên, và tương tự cho file “tenfile.php”. Giả sử file.php có nội dung là
echo "Đây là file.php";
Nếu ta include file.php này 10 lần thì dòng “Đây là file.php” cũng được xuất ra đúng 10 lần
2.8.2. Sử dụng Require
Có thể bạn quan tâm!
- Kết Quả Thực Hiện Trang Mang.php
- Kết Quả Sử Dụng Hàm Tách Chuỗi
- Lập trình mã nguồn mở - 9
- Trừu Tượng Hoá Dữ Liệu Ví Dụ: Xây Dựng Chương Trình Quản Lý Sinh Viên
- Các Đối Tượng Trong Trong Thế Giới Thực
- Tính Đa Hình Trong Lập Trình Hướng Đối Tượng Php
Xem toàn bộ 270 trang tài liệu này.
hàm require có chức năng tương tự như hàm include. Cách sử dụng hàm require
require "tênfile.php";
2.8.3. Sự khác nhau giữa Include và Require
Require làm được những gì mà hàm include làm. Điểm khác nhau lớn nhất của chúng là ở điều kiện với file được include/require.
Đối với include, PHP không quan tâm đến việc file đích có tồn tại. Nếu file đích không tồn tại, một dòng Warning quen thuộc sẽ hiện ra. Và nếu có thì PHP sẽ nạp file đó vào code đang thực thi như bình thường. Việc này nói lên một điều rằng, cho dù file được include có tồn tại hay không thì code của ta vẫn chạy tiếp.
Khác với include. Require bắt buộc file đích phải tồn tại và code của ta sẽ chỉ được chạy khi nào mà lệnh require được thưc thi thành công. Trong trường hợp không có file được require dòng code sẽ bị dừng ngay tại dòng require và PHP sẽ quăng ra môt thông báo lỗi dạng Fatal
2.8.4. Sử dụng Require_once và include_once
Hai hàm này làm việc như require và include. Chỉ khác là 2 hàm _once này sẽ kiểm tra xem file muốn nạp đã được nạp trước đó chưa. Nếu có rồi thì sẽ không nạp lại lần nữa.
require_once và include_once giúp đảm bảo chúng ta chỉ include một file một lần duy nhất.
Dưới đây là trường hợp nếu include/require nhiều lần, cùng 1 file sẽ gây ra lỗi.
function xuatThongBao()
{
echo "Xin chào";
}
Trong file .php ở trên chúng ta có một khai báo hàm. Việc chúng ta include file này hai lần sẽ đồng nghĩa với việc khai báo hàm xuatThongBao() 2 lần. Nếu chúng ta khai báo 2 hàm cùng một tên thì PHP sẽ đưa ra thông báo lỗi dạng Fatal. Đó chính là lý do dùng require_once và include_once.
2.9. Câu lệnh rẽ nhánh
2.9.1. Câu lệnh if else
1) Câu lệnh if
Cú pháp như sau:
if ($bieuthuc){
// Các Câu Lệnh
}
Ví dụ:Chương trình kiểm tra một số chẵn hay lẻ
$so_can_kiem_tra = 12;
$so_du = $so_can_kiem_tra % 2;
if ($so_du == 0){
echo 'Số '.$so_can_kiem_tra.' Là Số Chẵn';
}
2) Câu lệnh if else
Cú pháp như sau:
if ($bieuthuc){
// Những Câu Lệnh 1;
}
else{
// Những câu lệnh 2;
}
- Nếu $bieuthuc đúng thì Những Câu Lệnh 1 sẽ được thực hiện và Những Câu Lệnh 2 sẽ không được thực hiện.
- Ngược lại thì nó sẽ không cần kiểm tra nữa và thực hiện Những Câu Lệnh 2.
Ví dụ:kiểm tra năm nay là năm chẵn hay năm lẽ, xuất ra màn hình kết quả chẵn hay lẽ.
$nam = 2014; $so_du = $nam % 2; if ($so_du == 0){
echo 'Năm ' . $nam . ' Là Năm Chẵn';
}
else{
echo 'Năm ' . $nam . ' Là Năm Lẻ';
}
3) Kết hợp nhiều câu lệnh if else
Trong thực tế không phải lúc nào cũng chỉ có 2 điều kiện mà sẽ có hàng chục điều kiện khác nhau, lúc này ta phải kết hợp giữa 2 lệnh if và else để xử lý. Ví dụ:Nhập vào một màu và kiểm tra:
- Nếu là màu xanh thì xuất ra màn hình dòng chữ “Đây Là Màu Xanh”.
- Nếu là màu đỏ thì xuất ra dòng chữ “Đây là màu đỏ”.
- Nếu là màu vàng thì xuất ra dòng chữ “Đây là màu vàng”.
- Các màu còn lại thì xuất ra dòng chữ “Các màu khác”.
$mau = 'màu xanh';
if ($mau == 'màu xanh'){ echo 'Đây là màu xanh';
}
else if ($mau == 'màu đỏ'){ echo "Đây là màu đỏ";
}
else if ($mau == 'màu vàng'){ echo 'Đây là màu vàng';
}
else{
echo 'Các màu khác';
}
4) Câu lệnh if else lồng nhau
Cú pháp như sau:
if ($bieu_thuc_cha){
// Các câu lệnh thuộc về biểu thức cha; if ($bieu_thuc_con){
// Các câu lệnh thuộc về biểu thức con;
}
}
Ví dụ:Kiểm tra sô nhập vào có phải là số chẵn hay không? Nếu là số chẵn thì kiểm tra tiếp số đó có lớn hơn100 hay không, nếu lớn hơn 100 thì xuất ra màn hình “Số chẵn và lớn hơn 100″, ngược lại xuất ra màn hình “Số chẵn và nhỏ hơn 100″.
$so = 80; // Nhập vào số 80
if ($so % 2 == 0) // Nếu số dư khi chia cho 2 = 0
{
if ($so > 100){ // Nếu số lớn hơn 100 thì chạy lệnh bên trong echo 'Số chẵn và lớn hơn 100';
}
else if ($so < 100){ // Ngược lại nếu số nhỏ hơn 100 thì chạy lệnh bên trong echo 'Số chẵn và nhỏ hơn 100';
}
}
2.9.2. Câu lệnh switch case
1) Câu lệnh Switch
Câu lệnh switch trong php cho phép đưa ra quyết định có nhiều cách lựa chọn để giá trị của biểu thức truyền vào. Nếu giá trị biểu thức truyền vào trùng với các giá trị biểu thức điều kiện thì các câu lệnh bên trong biểu thức điều kiện sẽ được thực hiện. Cú pháp như sau:
switch ($variable) { case $value_1:
// chuỗi câu lênh break;
case $value_2:
// chuỗi câu lệnh break;
default:
// chuỗi câu lệnh break;
}
Trong đó lệnh switch, case và default là các từ khóa trong PHP. Các chuỗi câu lệnh có thể là lệnh đơn (1 lệnh) hoặc lệnh ghép (kết hợp nhiều lệnh) và không cần đặt trong cặp dấu ngoặc nhọn {}. Ở mỗi dòng lệnh lựa chọn (case) nó sẽ so sánh xem biến truyền vào $variable có bằng với biến điều kiện $value_1, $value_2 hay không, nếu trùng với case nào thì những câu lệnh bên trong case đó sẽ được thực hiện, đồng thời dòng lệnh break sẽ kết thúc câu lệnh switch. Nếu không có lựa chọn (case) nào đúng thì mặc định nó sẽ chạy vào chuỗi dòng lệnh trong default, lệnh default trong mệnh đề rẻ nhánh switch có thể có hoặc không.
Giá trị ở case chỉ chấp nhận các kiễu dữ liệu string, INT, boolean, null, float hoặc là một biểu thức có kết quả trả về một trong năm loại dữ liệu đó và toán tử quan hệ so sánh trong switch luôn luôn là ==.
Ví dụ:Viết chương nhập vào một số, dùng lệnh switch kiểm tra số đó:
$number = 1; switch ($number){
case 0 :
echo 'Số không'; break;
case 1:
echo 'Số một'; break;
case 2:
echo 'Số hai'; break;
case 3:
echo 'Số ba'; break;
case 4 :
echo 'Số bốn'; break;
default:
echo 'Không tìm thấy'; break;
}
2) Switch lồng nhau
Cũng như lệnh if, lệnh switch cũng có thể lồng nhau.
$number = 12;
$midle = null; switch ($number){
case 12 : // nếu $number = 12
$midle = $number % 2; // lấy số dư switch ($midle)
{
case 0 : // nếu số dư = 0 echo 'Số chẵn'; break;
default :
echo 'Số lẽ'; break;
}
break;
default: // nếu không phải 12 thì không làm gì break;
}
2.10. Các cấu trúc lặp
2.10.1. Lệnh for
1) Vòng lặp for
Cú pháp:
for($bien_dieu_khien;$bieu_thuc_dieu_kien;$bieu_thuc_thay_doi_bien_dieu_khien)
{
// lệnh
}
- $bien_dieu_khien: là một câu lệnh gán giá trị ban đầu cho biến điều khiển trước khi thực hiên vòng lặp, hoặc là một biến có giá trị sẵn mà ta đã truyền vào cho nó trước khi tạo vòng lặp này, lệnh này được thực hiện duy nhất một lần.
- $bieu_thuc_dieu_kien: là một biểu thức quan hệ xác định điều kiện thoát khỏi vòng lặp.
- $bieu_thuc_thay_doi_bien_dieu_khien: Xác định biến điều khiển sẽ bị thay đổi như thế nào sau mỗi lần lặp được lặp lại (thường là tăng hoặc giảm giá trị của biến điều khiển).
Ba biểu thức trên được cách nhau bởi dấu chấm phẩy, vòng lặp sẽ lặp khi biểu thức điều kiện đúng, khi biểu thức điều kiện sai thì vòng lặp sẽ dừng và thoát, và ta sử dụng các toán tử quan hệ và toán tử logic trong các biểu thức điều kiện để điều khiển vòng lặp.
Ví dụ:
for ($i = 0; $i < 10; $i++){ echo $i . ' - ';
}
2) Vòng lặp for lồng nhau
Giống như câu điều kiện if, vòng lặp for trong php có thể lồng nhau để xử lý bài toán. Ở mỗi vòng lặp cha thì vòng lặp con sẽ được thực hiện (vòng lặp con lặp cho đến hết), điều này tuân thủ theo quy tắc phải thực hiện hết nội dung dòng lệnh bên trong vòng lặp mới thực hiện vòng kế tiếp.
Ví dụ:
for ($i = 1; $i < 10; $i++)
{
for ($j = 9; $j >= $i; $j--)
{
echo $j;
}
echo '<br/>';;
}
2.10.2. Lệnh foreach
Cấu trúc này đơn giản tạo ra một cách dễ dàng để duyệt qua các mảng. Có hai cú pháp; cú pháp thứ hai là thứ yếu nhưng là sự mở rộng một cách hữu ích của cấu trúc thứ nhất:
foreach(array_expression as $value) statement foreach(array_expression as $key => $value) statement
Dạng đầu tiên của các vòng lặp trên mảng được đưa ra bởi array_expression. Trên mỗi vòng lặp, giá trị của các phần tử hiện tại được gán cho $value và con trỏ mảng cục bộ được tăng lên một (bởi vậy trong vòng lặp sau, ta sẽ thấy phần tử tiếp theo).
Dạng thứ hai cũng thực hiện việc tương tự, từ khoá của phần tử hiện tại sẽ được gán tới biến $key trên mỗi vòng lặp.
Chú ý:
- Khi foreach lần đầu tiên bắt đầu thực hiện, con trỏ cục bộ tự động được điều
chỉnh lại tới phần tử đầu tiên của mảng . Điều này có nghĩa là ta không cần gọi hàm reset() trước mỗi vòng lặp foreach.
- foreach thao tác trên một bản sao chép của mảng được chỉ ra, không phải là chính mảng đó. Do vậy, con trỏ mảng không bị thay đổi giống như mỗi cấu trúc.
Ta phải chú ý rằng các ví dụ sau có cùng một chức năng như nhau:
reset ($arr);
while (list(, $value) = each ($arr)) { echo "Value: $value<br>n";
}
foreach ($arr as $value) { echo "Value: $value<br>n";
}
Sau đây cũng có chức năng tương tự:
reset ($arr);
while (list($key, $value) = each ($arr)) { echo "Key: $key; Value: $value<br>n";
}
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value<br>n";
}
Một số ví dụ để mô tả cách sử dụng:
/* foreach example 1: value only */
$a = array (1, 2, 3, 17); foreach ($a as $v) {
print "Current value of $a: $v.n";
}
/* foreach example 2: value (with key printed for illustration) */
$a = array (1, 2, 3, 17);
$i = 0; /* for illustrative purposes only */ foreach($a as $v) {
print "$a[$i] => $v.n";
}
/* foreach example 3: key and value */
$a = array ( "one" => 1,