Các hàm kiểm tra giá trị của biến Kiểm tra tồn tại isset Kiểm tra giá trị rỗng empty Kiểm tra trị kiểu số is_numeric Kiểm tra kiểu dữ liệu của biến Xác định kiểu của biến gettyp
Trang 1NHẬP MÔN LẬP TRÌNH
WEB VỚI PHP
Trang 31 Biến
Khái niệm
Khai báo và gán giá trị cho biến
Phạm vi hoạt động của biến
Trang 4Khái niệm
Khái niệm
– Biến là một ô nhớ trong bộ nhớ chính giúp
biểu diễn thông tin thực tế trong chương trình.
Ô nhớ
Ví dụ
– Với một số nguyên n=8 => trong chương trình có
Trang 5Khai báo và gán giá trị cho biến
Khai báo biến
– Cú pháp: $tên_biến
– Ví dụ: $tong
Quy tắc đặt tên cho biến
– Tên biến phải bắt đầu bằng ký tự $, theo sau là
1 ký tự hoặc dấu _, tiếp đó là ký tự, ký số hoặc dấu _
– Nên khởi tạo giá trị ban đầu cho biến
Trang 6Khai báo và gán giá trị cho biến
Lưu ý
– Tên biến có phân biệt chữ HOA – chữ thường
– Ví dụ: biến $a và biến $A là hai biến khác nhau
Trang 7Khai báo và gán giá trị cho biến
Gán giá trị cho biến
Trang 8Khai báo và gán giá trị cho biến
Gán giá trị cho biến (tt)
– Gán giá trị của biến khác cho biến
Trang 9Phạm vi hoạt động của biến
Biến cục bộ
Biến toàn cục
Biến static
Trang 10Phạm vi hoạt động của biến
Biến cục bộ
– Biến được khai báo trong hàm => biến cục bộ
– Khi ra khỏi hàm => biến cục bộ và giá trị của nó
sẽ bị hủy bỏ
– Lưu ý: khi có cùng tên thì biến bên trong hàm
và biến bên ngoài hàm là hai biến hoàn toàn khác nhau
Trang 11Phạm vi hoạt động của biến
Biến cục bộ
– Ví dụ:
<?php function Test() {
$a=5;
echo $a; // phạm vi cục bộ }
Test(); → 5
echo $a; → khong co
?>
Trang 12Phạm vi hoạt động của biến
Biến toàn cục
– Có thể truy xuất bất cứ nơi nào trong trang
– Khi muốn sử dụng và cập nhật biến toàn cục
trong hàm thì phải dùng từ khóa global phía trước biến hoặc dùng $_GLOBALS[“tên_biến”]
Trang 13Phạm vi hoạt động của biến
global $a, $b;
$b = $a + $b;
} Sum();
Trang 14Phạm vi hoạt động của biến
$_GLOBALS['b'] = $_GLOBALS['a'] + $_GLOBALS['b'];
} Sum();
Trang 15Phạm vi hoạt động của biến
Biến static
– Không mất đi giá trị khi ra khỏi hàm
– Sẽ giữ nguyên giá trị trước đó khi hàm được gọi
một lần nữa
– Phía trước tên biến static phải có từ khóa static
Trang 16Phạm vi hoạt động của biến
Biến static
– Ví dụ:
<?php function Test() {
static $a = 0;
echo $a;
$a++;
} Test(); → 0
Test(); → 1
Trang 172 Hằng
Khai báo
Sử dụng
Trang 18Khai báo
– Khái niệm: Hằng là một giá trị không thể chỉnh
sửa được trong quá trình thực hiện chương trình
– Quy tắc đặt tên hằng cũng giống như quy tắc
đặt tên biến.
– Dùng hàm define() để định nghĩa Một khi hằng
được định nghĩa, nó không bị thay đổi.
– Chỉ có các kiểu dữ liệu boolean, integer, float,
string mới có thể chứa các hằng
Trang 20Sử dụng
Dùng tên hằng mỗi khi muốn sử dụng
– Ví dụ: tính diện tích và chu vi hình tròn với bán
Trang 223 Kiểu dữ liệu
Kiểu dữ liệu – mô tả
Chuyển đổi kiểu dữ liệu
Trang 23Kiểu dữ liệu – mô tả
Boolean : chỉ có một trong hai giá trị là
TRUE và FALSE
– Ví dụ:
<?php $ket_qua = True;
?>
Trang 24Kiểu dữ liệu – mô tả
Integer : Kiểu số nguyên
Giá trị có thể là số trong hệ thập phân,
Trang 25Kiểu dữ liệu – mô tả
Float / double : Kiểu dữ liệu số thực
Trang 26Kiểu dữ liệu – mô tả
String : Kiểu dữ liệu chuỗi, ký tự Trong đó,
mỗi ký tự chiếm 1 byte.
Mỗi chuỗi có thể chứa một hay nhiều ký tự
Trang 27Kiểu dữ liệu – mô tả
Trang 28Kiểu dữ liệu – mô tả
Trang 29Chuyển đổi kiểu dữ liệu
Trong quá trình tính toán, kiểu dữ liệu cũ của biến có thể
không còn phù hợp nữa (kết quả tính toán vượt khỏi phạm vi của kiểu dữ liệu cũ) => chuyển đổi kiểu dữ liệu
Cách thực hiện: ghi tên kiểu dữ liệu mà biến muốn chuyển đổi vào phía trước biến
Trang 37Toán tử nối chuỗi
Sử dụng toán tử “ ” để nối các chuỗi lại với nhau
Trang 52Toán tử luận lý
Toán tử And, &&
– Ý nghĩa: Đúng nếu cả hai biểu thức có giá trị
Trang 53Toán tử luận lý
Toán tử Or, ||
– Ý nghĩa: Đúng khi một trong hai biểu thức có giá
trị TRUE, hoặc cả hai cùng có giá trị TRUE
Trang 545 Tham chiếu
Khái niệm
Cách thức làm việc của tham chiếu
Trang 56Cách thức làm việc của tham chiếu
Tham chiếu trong PHP cho phép tạo ra hai
hay nhiều biến có cùng một nội dung
Trang 576 Các hàm kiểm tra giá trị của biến
Kiểm tra tồn tại isset()
Kiểm tra giá trị rỗng empty()
Kiểm tra trị kiểu số is_numeric()
Kiểm tra kiểu dữ liệu của biến
Xác định kiểu của biến gettype()
Trang 58Kiểm tra tồn tại: isset()
Ý nghĩa: dùng để kiểm tra biến có giá trị hay không
Cú pháp: isset(<tên biến 1>, <tên biến 2>, …)
Kết quả trả về:
– TRUE: nếu tất cả các biến đều có giá trị
– FALSE: nếu một biến bất kỳ không có giá trị
Trang 59Kiểm tra tồn tại: isset()
Ví dụ:
<?php
if( isset ($_POST[”ten_dang_nhap”]))
echo ”Xin chào ”.$_POST[”ten_dang_nhap”];
else
echo ”Vui lòng nhập tên đăng nhập”;
?>
Trang 60Kiểm tra giá trị rỗng: empty()
Ý nghĩa: dùng để kiểm tra biến có giá trị rỗng hay không
Cú pháp: empty(<tên biến>)
– Kết quả trả về:
• TRUE: nếu biến có giá trị rỗng
• FALSE: nếu một biến có giá trị khác rỗng
– Các giá trị được xem là rỗng:
• “” (chuỗi rỗng), NULL
Trang 61Kiểm tra giá trị rỗng: empty()
echo ”Xin chào ”.$_POST[”ten_dang_nhap”];
?>
Trang 62Kiểm tra trị kiểu số: is_numeric()
Ý nghĩa: dùng để kiểm tra biến có giá trị kiểu
số hay không
Cú pháp: is_numeric(<tên biến>)
– Kết quả trả về:
• TRUE: nếu biến có giá trị kiểu số
• FALSE: nếu biến có giá trị không phải kiểu số
Trang 63Kiểm tra trị kiểu số: is_numeric()
echo “Số lượng phải là kiểu số!”;
?>
Trang 64Kiểm tra kiểu dữ liệu của biến
is_int() / is_long()
is_string()
is_double()
– Ý nghĩa: kiểm tra giá trị của biến có phải là kiểu
integer - long – string – double hay không
– Cú pháp chung: tên_hàm(<tên_biến>)
Trang 65Kiểm tra kiểu dữ liệu của biến
Trang 66Xác định kiểu của biến: gettype()
Ý nghĩa; kiểm tra biến hoặc giá trị có kiểu dữ liệu
nào: integer, string, double, array, object, class, …
Cú pháp: gettype(<tên biến> hoặc <giá trị>)
Kết quả trả về: kiểu của giá trị hay kiểu của biến
Trang 67Kiểm tra kiểu dữ liệu của biến
echo gettype($n); → string
echo gettype($a); → integer
echo gettype($b); → double
echo gettype($mang); → array
?>
Trang 687 Cấu trúc điều khiển
Trang 72– Điều kiện là một biểu thức logic trả về đúng
(TRUE) hoặc sai (FALSE)
Trang 74Toán tử ?:
Cú pháp:
( điều kiện ) ? <kết quả khi điều kiện đúng> : <kết quả khi điều kiện sai>
– Ý nghĩa: dùng để thay thế cho cấu trúc điều
khiển if…else với một câu lệnh bên trong
– Có thể lồng nhiều toán tử ?: với nhau
Trang 77khối lệnh 2
}
… else
{
khối lệnh khi không thỏa các điều kiện trên
}
Trang 79Cấu trúc rẽ nhánh if
Dạng 1: if … elseif … else
– Ví dụ: Tính thành tiền cho một hàng hóa: khi số lượng
nhỏ hơn 10 đơn vị thì không giảm giá, từ 10->20 đơn vị thì giảm 5%, trên 20 đơn vị thì giảm 10%
<?php
$so_luong = $_POST[“so_luong”];
$don_gia = $_POST[“don_gia”];
if ($so_luong <10)
$thanh_tien = $so_luong * $don_gia;
elseif ($so_luong >= 10 and $so_luong <=20)
$thanh_tien = ($so_luong * $don_gia) * 0.95;
Trang 80Cấu trúc chọn lựa switch
Cấu trúc switch cũng tương tự như cấu trúc if
trong trường hợp có nhiều điều kiện
Những trường hợp khác nhau có những cách
xử lý khác nhau => dùng switch
Trang 81Cấu trúc chọn lựa switch
Dạng 1: mỗi truờng hợp một cách xử lý khác nhau
Trang 82Cấu trúc chọn lựa switch
Dạng 1: mỗi truờng hợp một cách xử lý khác
nhau
– Ý nghĩa
Xem xét biến điều kiện
truờng hợp biến điều kiện = giá trị 1
thì thực hiện khối lệnh 1
truờng hợp biến điều kiện = giá trị 2
thì thực hiện khối lệnh 2
… [mặc định
Trang 83Cấu trúc chọn lựa switch
Trang 84Cấu trúc chọn lựa switch
khối lệnh
[default: khối lệnh khi không thỏa tất cả các case trên ]
Trang 85Cấu trúc chọn lựa switch
Dạng 2: mỗi nhóm các t/hợp có cùng một
cách xử lý
– Ý nghĩa
Xem xét biến điều kiện
truờng hợp biến điều kiện = giá trị 1
hoặc biến điều kiện = giá trị 2
hoặc … thì thực hiện khối lệnh
… [mặc định
Trang 86Cấu trúc chọn lựa switch
Trang 87Cấu trúc chọn lựa switch
So sánh với cách viết dùng if
– Ví dụ: In câu chúc theo thứ trong tuần
<?php
if ($thu==“Thứ hai” || $thu==“Thứ ba” || $thu==“Thứ tư” ||
$thu==“Thứ năm” || $thu==“Thứ sáu”)
echo “Chúc một ngày làm việc tốt!”;
elseif ($thu==“Thứ bảy” || $thu==“Chủ nhật”)
echo “Cuối tuần vui vẻ”;
?>
Trang 89Cấu trúc lặp for
Công dụng:
– for được sử dụng khi chúng ta biết trước số lần cần lặp,
biến đếm chạy trong khoảng giới hạn của vòng lặp, và giá trị lặp.
Cú pháp:
for($biến_đếm = giá trị khởi đầu của vòng lặp for; điều kiện giới hạn của vòng lặp for; giá trị lặp của vòng lặp for) {
khối lệnh
Trang 90Cấu trúc lặp for
Ý nghĩa:
– Khối lệnh chỉ được thực hiện khi biến đếm vẫn còn
nằm trong khoảng giới hạn của vòng lặp
– Vòng lặp sẽ kết thúc khi biến đếm vượt qua khoảng
giới hạn của vòng lặp
– Cần chỉ định giá trị lặp của biến đếm Sau mỗi lần lặp
biến đếm sẽ tăng lên (hoặc giảm đi )
Trang 91?>
Trang 93Cấu trúc lặp foreach
Công dụng:
– foreach thường được dùng để duyệt tập hợp (mảng).
Cú pháp duyệt giá trị các phần tử trong mảng:
foreach ($ten_mang as $gia_tri ) {
khối lệnh
}
Cú pháp duyệt cả khóa và giá trị các phần tử trong mảng:
foreach ($ten_mang as $tu_khoa => $gia_tri ) {
Trang 94Cấu trúc lặp foreach
Ý nghĩa:
– Cấu trúc này sẽ duyệt từ phần tử đầu tiên đến phần tử
cuối cùng của tập hợp (mảng) để thực hiện các xử lý tương ứng
Trang 95Cấu trúc lặp foreach
Ví dụ 1: duyệt và in nội dung của các phần tử
trong mảng
<?php
$mang_ten = array(“mai”, “lan”, “cúc”, “trúc”);
foreach ($mang_ten as $ten) {
echo $ten “ ”;
}
→ mai lan cúc trúc
?>
Trang 96Cấu trúc lặp foreach
Ví dụ 2: duyệt và in nội dung của khóa và giá trị của các phần tử trong mảng
<?php
$a = array("one" => 1, "two" => 2, "three" => 3, "four" => 4);
foreach ($a as $tu_khoa => $gia_tri)
{ echo "a[$tu_khoa] => $gia_tri ";
}
?>
→ a[one] => 1 a[two] => 2 a[three] => 3 a[four] => 4
Trang 97Cấu trúc lặp while
Công dụng
– Thực hiện lặp đi lặp lại một công việc nào đó khi thỏa
điều kiện.
– while đuợc sử dụng khi không xác định được số lần lặp
(số lần lặp phụ thuộc vào điều kiện tại thời điểm thực thi)
Cú pháp
while( điều kiện ) {
khối lệnh
Trang 98Cấu trúc lặp while
Ý nghĩa
– Điều kiện là một biểu thức logic (có kết quả TRUE hoặc
FALSE)
– Sau mỗi lần thực hiện khối lệnh trong while, điều kiện sẽ
được kiểm tra lại.
Nếu giá trị True thì thực hiện lại vòng lặp Nếu giá trị False thì chấm dứt vòng lặp
– Cấu trúc này kiểm tra điều kiện trước khi thực hiện các
lệnh nên sẽ không thực hiện lần nào nếu ngay lần đầu
Trang 99$tong = $tong +$i;
$i= $i+1;
} echo $tong; → 45
?>
Trang 100if($i%$n==0) {
$lon_nhat = $i;
break;
Cải tiến while($i>=$n)
Trang 101Cấu trúc lặp do … while
Công dụng
– Thực hiện lặp đi lặp lại một công việc nào đó khi thỏa
điều kiện.
– do… while: việc kiểm tra điều kiện sẽ được thực hiện sau
khi thực hiện khối lệnh do { …}
Cú pháp
do {
khối lệnh
}
Trang 102Cấu trúc lặp do … while
Ý nghĩa
– Điều kiện là một biểu thức logic (có kết quả TRUE hoặc FALSE)
– Sau mỗi lần thực hiện khối lệnh trong do … while, điều
kiện sẽ được kiểm tra lại.
Nếu giá trị True thì thực hiện lại vòng lặp Nếu giá trị False thì chấm dứt vòng lặp – Do điều kiện được kiểm tra sau khi thực hiện khối lệnh
nên nếu ngay lần đầu điều kiện có giá trị FALSE thì khối
Trang 104}
while (($so > 2) && ($so < 4));
?>
Trang 105Sử dụng break và continue trong cấu trúc lặp
– Công dụng: thoát khỏi cấu trúc điều khiển dựa trên kết
quả của biểu thức luận lý kèm theo (điều kiện kiểm tra)
Trang 106Sử dụng break và continue trong cấu trúc lặp
Trang 107Sử dụng break và continue trong cấu trúc lặp
continue
– Công dụng: Khi gặp continue, các lệnh bên dưới continue tạm thời không thực hiện tiếp, khi đó con trỏ sẽ nhảy về đầu vòng lặp để kiểm tra giá trị của biểu thức điều kiện còn đúng hay không
– continue thường đi kèm với một biểu thức luận lý
Trang 108Sử dụng break và continue trong cấu trúc lặp
continue;
$tong = $tong + $i;
} echo $tong; → 25
Trang 1099 Hàm
Hàm thư viện
Hàm do người dùng tự định nghĩa
Trang 110Hàm thư viện
Là các hàm được PHP xây dựng sẵn, chỉ cần gọi khi sử dụng
Có rất nhiều nhóm hàm trong thư viện: nhóm hàm chuỗi, toán học, thời gian, lịch, mảng,
thư mục, tập tin, mail, CSDL, …
Cách dùng: viết đúng tên hàm và truyền vào các giá trị cần thiết.
Trang 112Hàm do người dùng tự định nghĩa
Cách khai báo:
function Tên_hàm(Danh_sách_các_tham_số) {
khối lệnh bên trong hàm return giá_trị;
}
Trang 113Hàm do người dùng tự định nghĩa
Trong đó
– Tên hàm: được sử dụng khi gọi hàm, tên hàm
nên có ý nghĩa gợi nhớ
– Danh sách các tham số: dùng để truyền dữ liệu
bên ngoài vào, hàm có thể có hoặc không có tham số
– Giá trị: là kết quả trả về của hàm Hàm có thể
có hoặc không có giá trị trả về
Trang 114Hàm do người dùng tự định nghĩa
Ví dụ: xây dựng hàm xuất câu chào
<?php
function xuat_cau_chao() {
echo “Chào mừng các bạn đến với PHP”;
}
?>
Trang 115Hàm do người dùng tự định nghĩa
Sử dụng:
Tên_hàm(Danh_sách_các_giá_trị)
– Tên hàm gọi sử dụng phải giống tên hàm đã xây dựng
– Danh sách các giá trị: cung cấp các thông tin cho tham số
của hàm Với:
• Số lượng các giá trị bằng số lượng các tham số của hàm
• Thứ tự tương ứng theo thứ tự các tham số
• Kiểu dữ liệu của giá trị phải tương ứng với kiểu của tham số
Trang 117$tong = 0;
$tong = $a+$b;
return $tong;
}
Trang 118?>
Trang 119Hàm do người dùng tự định nghĩa
Phân loại tham số của hàm: có hai loại
– Tham trị: truyền tham số theo giá trị
– Tham biến: truyền tham số theo địa chỉ
Trang 120Hàm do người dùng tự định nghĩa
Tham trị
– Tham số truyền giá trị từ bên ngoài vào cho hàm
– Khi thay đổi giá trị của tham trị bên trong hàm thì
giá trị của nó ở ngoài hàm vẫn không bị thay đổi
Trang 121$chuoi = "và chuỗi sau khi thêm.";
return $chuoi;
}
$chuoi_goc= "Đây là chuỗi gốc, ";
echo them_vao_chuoi($chuoi_goc); → "Đây là chuỗi gốc, và chuỗi
sau khi thêm."
echo $chuoi_goc ; → "Đây là chuỗi gốc, "
Trang 122Hàm do người dùng tự định nghĩa
Tham biến:
– Tham số truyền giá trị từ bên ngoài cho hàm và
trả giá trị ở trong hàm ra bên ngoài
– Khi thay đổi giá trị của tham biến bên trong hàm
thì giá trị của nó ở ngoài hàm cũng sẽ thay đổi sau khi chúng ta gọi hàm đã xây dựng.
– Đối với tham biến chúng ta sẽ sử dụng cú pháp
với ký tự & ở phía trước
Trang 124$chuoi = "và chuỗi sau khi thêm.";
return $chuoi;
}
$chuoi_goc= "Đây là chuỗi gốc, ";
echo them_vao_chuoi($chuoi_goc); → "Đây là chuỗi gốc, và chuỗi
sau khi thêm."
Trang 126}
Trang 127echo so_thich("nước ép trái cây"); → “Tôi thích uống nước
ép trái cây.”
?>
Trang 1288 Xử lý lỗi
Phân loại lỗi
Dò và sửa lỗi thủ công
Dùng try…catch để dò và sửa lỗi
Trang 129Phân loại lỗi
Lỗi cú pháp (syntax error)
– Xuất hiện khi ta viết code
– Được thông báo khi ta thực thi trang
– Nguyên nhân: viết sai hoặc thiếu cú pháp
Trang 130Phân loại lỗi
Lỗi luận lý
– Xảy ra khi ta thực thi trang
– Được thể hiện dưới những hình thức hoặc những kết quả không mong đợi
– Nguyên nhân: sai lầm trong thuật giải
Trang 131Dò và sửa lỗi thủ công
Khi có lỗi phát sinh thì trang thực thi sẽ tự
động thông báo lỗi
Cách sửa lỗi:
– Xem thông báo lỗi và dòng xảy ra lỗi
– Mở code và sửa lỗi tại dòng đó (hoặc dòng lân
cận)
Trang 132Dùng try…catch để dò và sửa lỗi
Try … catch: cho phép thử thực hiện một khối lệnh xem có
bị lỗi hay không, nếu có sẽ bẫy và xử lý lỗi.
Cấu trúc try … catch có hai khối:
– Khối try: các câu lệnh có khả năng gây ra lỗi
– Khối catch: các câu lệnh để bẫy và xử lý lỗi phát sinh trên
khối try.
Một lỗi xảy ra khi thực thi trang gọi là một Exception.
Nếu dòng nào trong khối lệnh có khả năng tạo ra lỗi thì gọi trả về lỗi đó
Trang 133Dùng try…catch để dò và sửa lỗi
Trong PHP lỗi sẽ không tự động trả về =>
gọi lỗi đó bằng cú pháp sau:
throw new Exception(“Câu thông báo lỗi”,
code);
Với câu thông báo lỗi và mã lỗi (code) đều
là các tham số tùy chọn