Tiếp theo bài học khai báo biến và hằng số trong php thì chúng ta sẽ học bài các kiểu dữ liệu trong php. Trong bài này chúng ta sẽ tìm hiểu tất cả các kiểu dữ liệu, trừ kiểu dữ liệu trừu tượng ( trừu tượng hóa dữ liệu ) vì đây là kiến thức lập trình hướng đối tượng.
Trang 1Các ki u d li u trong php ể ữ ệ
Trong php có t ng c ng 7 ki u d li u:ổ ộ ể ữ ệ
• Ki u INTể
• Ki u Booleanể
• Ki u S Th c (float, double)ể ố ự
• Ki u Chu iể ỗ
• Ki u M ng (array)ể ả
• Ki u NULLể
• Ki u ể Đối T ượn g (object)
N i dung chính ộ
• 1 Ki u d li u INTể ữ ệ
o Khai báo bi n ki u INTế ể
o Ép d li u sang ki u INTữ ệ ể
o Ki m tra d li u có ph i ki u INT.ể ữ ệ ả ể
• 2 Ki u d li u booleanể ữ ệ
o Ép d li u sang ki u boolean.ữ ệ ể
o Ki m tra m t bi n ki u booleanể ộ ế ể
• 3 Ki u sể ố th cự
o Ép d li u sang ki u s th c.ữ ệ ể ố ứ
o Ki m tra m t bi n ki u s th c.ể ộ ế ể ố ự
• 4 Ki u chu iể ỗ
o Ki m tra m t bi n ki u stringể ộ ế ể
Trang 2• 5 Ki u m ng (array)ể ả
o Kh i t o và truy xu t các h n t trong m ngở ạ ấ ầ ử ả
o M ng có ch m cả ỉ ụ
o M ng k t h pả ế ợ
o M ng m t chi uả ộ ề
o M ng nhi u chi uả ề ề
o Ki m tra m t bi n ki u m ngể ộ ế ể ả
• 6 Ki u giá tr Nullể ị
o Ki m tra m t bi n có giá tr nullể ộ ế ị
• 7 Ki u Object (ể đố ượi t ng)
• 8 K t thúc bài h cế ọ
1 Ki u d li u INT ể ữ ệ
Ch INT là vi t t t c a ch INTEGER, là m t ki u d li u d ng s và có th vi t nhi u c s ữ ế ắ ủ ữ ộ ể ữ ệ ạ ố ể ở ế ở ề ơ ố khác nhau
Ví d 1:ụ
1
2
3
4
5
6
<?php
$thap_phan= 123; // Số thập phân
$so_am= -123; // Số âm
$bat_phan= 0123; // số bát phân
$thap_luc_phan= 0x1A; // và số thập lục phân
?>
Ki u s INT Chúng ta không dùng d u nháy ể ố ấ để bao quanh nó và kích thước c a ki u INT là 32bit ủ ể Trong PHP không h tr nhi u ki u Unsigned Integer (S nguyên dỗ ợ ề ể ố ương) nên n u b n s d ng ế ạ ử ụ
vượt quá gi i h n c a nó thì m c nhiên trình biên d ch s hi u ây là ki u Float (s th c), tuy nhiên ớ ạ ủ ặ ị ẽ ể đ ể ố ự không ph i lúc nào i u này c ng úng cho trả đ ề ũ đ ường h p s dợ ố ương
Trang 3Khai báo bi n ki u INT ế ể
khai báo m t bi n ki u INT b n s gán giá tr cho nó là s nguyên (k c s âm)
Ví d 2:ụ
1
2
3
<?php
$tuoi= 12; // biến $tuoi là kiểu INT có giá trị = 12
?>
Ép d li u sang ki u INT ữ ệ ể
Cú Pháp: (int)$ten_bien;
Ví d 3:ụ
1
2
3
4
<?php
$tuoi= '98'; // biến tuổi là một chuỗi có giá trị bằng '98'
$tuoi= (int)$tuoi; // lúc này biến $tuoi là một kiểu int có giá trị 98
?>
Vi c chuy n ệ ể đổi này trong PHP ôi khi l i không c n thi t vì các ki u d li u trong php t đ ạ ầ ế ể ữ ệ ự động
chuy n các bi n sang các ki u thích h p ể ế ể ợ để th c hi n phép tính, tuy nhiên sau khi th c hi n tính ự ệ ự ệ
toán thì bi n ó s t chuy n l i ki u d li u ban ế đ ẽ ự ể ạ ể ữ ệ đầu
Ví d 4:ụ
1
2
3
4
5
6
7
<?php
$a= '123'; // Biến $a là kiểu chuỗi có giá trị bằng '123'
$b= 123; // Biến $b là kiểu INT có giá trị bằng 123
$c= $a+ $b; // Biến C là kết quả của phép toán $a + $b và sẽ có giá trị là 246 nên nó là kiểu INT var_dump(is_int($c)); // hàm is_int($tenbien) dùng để kiểm tra một biến có phải là kiểu INT hay không
var_dump(is_int($a)); // kết quả là false vì biến $a là kiểu string
?>
Trong ví d này các b n th y bi nụ ạ ấ ế $a là chu i còn bi nỗ ế $b là s , khi ta c ng 2 bi n l i thì các bi n số ộ ế ạ ế ẽ
t ự động chuy n sang ki u s INT thích h p ể ể ố ợ để ộ c ng, và k t qu là ki u INT gán vào bi nế ả ể ế $c Để
ki m tra b n dùng dòng l nhể ạ ệ var_dump(is_int($c));để xu t ra màn hình k t qu ki m tra.ấ ế ả ể
Trang 4Ví d 5:ụ
1
2
3
4
5
<?php
$a= 'a123'; // biến $a có giá trị là chuỗi 'a123'
$a= (int)$a; // chuyển $a sang kiểu INT
echo$a; // kết quả xuất ra màn hình là số 0
?>
Ch y o n l nh này các b n s th y k t qu ra s 0 T i sao? vì b n th y bi nạ đ ạ ệ ạ ẽ ấ ế ả ố ạ ạ ấ ế $a có ký t ự đầu tiên không ph i d ng s nên nó s t ả ở ạ ố ẽ ự động c t b t t c nh ng ký t ắ ỏ ấ ả ữ ự đằng sau ký t a nên chu i này ự ỗ
r ng, mà giá tr r ng chuy n sang ki u INT có giá tr b ng không.ỗ ị ỗ ể ể ị ằ
Ví d 6:ụ
1
2
3
4
5
<?php
$a= '123a'; // biến $a có giá trị là chuỗi '123a'
$a= (int)$a; // chuyển $a sang kiểu INT
echo$a; // kết quả xuất ra màn hình là số 123
?>
Ch y o n code này k t qu xu t ra màn hình là 123, c ng nh gi i thích trên nó s xóa các ký tạ đ ạ ế ả ấ ũ ư ả ở ẽ ự
b t ắ đầu t ký t a nên chu i s còn ’123 , chuy n sang ki u INT ừ ự ỗ ẽ ′ ể ể thành 123
Ki m tra d li u có ph i ki u INT ể ữ ệ ả ể
ki m tra m t bi n nào ó có ph i ki u INT không b n dùng 2
hàm is_int($bien) ho cặ is_integer($bien) k t qu tr v giá trế ả ả ề ị True n u là ki u INT vàế ể False n u ế không ph i ki u INT.ả ể
2 Ki u d li u boolean ể ữ ệ
ây là m t ki u d li u n gi n nh t trong các ki u d li u trong PHP, nó ch ch a 2 giá tr là úng
ho c sai (TRUE ho c FALSE) ặ ặ Để ạ t o bi nế ki u booleanể thì b n gán giá tr cho nó là TRUE ho c ạ ị ặ FALSE L u ýư TRUE, FALSE không phân bi t hoa thệ ường, ngh a là b n gõ th nào c ng ĩ ạ ế ũ được
mi n là úng.ễ đ
Ví d 7:ụ
1 <?php
Trang 53
$is_admin = false; // biến $admin là kiểu boolean có gái trị là false
?>
Ép d li u sang ki u boolean ữ ệ ể
Tương t nh ki uự ư ể INT b n s d ng (bool) ho c (boolean) ạ ử ụ ặ để ép ki u sang ki u bool.ể ể Nh v y trongư ậ PHP thì bool và boolean là 2 t khóa có cùng m t ý ngh a.ừ ộ ĩ
Ví d 8:ụ
1
2
3
4
5
6
<?php
$bool= 1; // biến $bool là kiểu int
$bool= (bool)$bool; // lúc này biến $bool sẽ có kiểu boolean
// Hoặc
$bool= (boolean)$bool; // lúc này biến $bool sẽ có kiểu boolean
?>
Các ký tự 0, ký tự tr ngố và null đề đượu c quy v giá trề ị FALSE, các ký t còn l i quy vự ạ ề TRUE Vi c ệ chuy n ể đổi này ôi khi c ng không c n thi t vì php t xem xét giá tr và quy vđ ũ ầ ế ự ị ề TRUE hay FALSE
Ví d 9:ụ
1
2
3
4
5
6
7
8
<?php
$a= 123; // TRUE
$b= 0; // FALSE
$c= '0'; // FALSE
$d= 'a123b'// TRUE
$e= null; // FALSE
$f= ''; // FALSE
?>
Ki m tra m t bi n ki u boolean ể ộ ế ể
ki m tra m t bi n có ph i ki u boolean b n dùng hàm
Để ể ộ ế ả ể ạ is_bool($bien);để ể ki m tra, k t qu c a ế ả ủ hàm này tr v TRUE n u là ki u bool, ngả ề ế ể ượ ạc l i là false n u không ph i ki u bool.ế ả ể
Trang 63 Ki u s ể ố th c ự
Hi u m t cách nôm na ki u s th c là nh ng s có ph n d , còn ki uể ộ ể ố ự ữ ố ầ ư ể INT là nh ng s không d ữ ố ư
ph n nào, nh s 1.234 là ki u s th c, 1234 là ki u s nguyên (INT) Kích c c a nó ph thu c ầ ư ố ể ố ự ể ố ỡ ủ ụ ộ xác nh ph thu c vào t ng platform nh ng giá tr l n nh t x p x 1.8e308, các ki u d li u trong đị ụ ộ ừ ư ị ớ ấ ấ ỉ ể ữ ệ php c a ki u s th c g m có ki u float, double.ủ ể ố ự ồ ể
Ví d 10:ụ
1
2
3
<?php
$a= 1.234; // Kiểu số thực
?>
Ép d li u sang ki u s th c ữ ệ ể ố ứ
B n dùngạ (float), (double) để chuy n ki u d li u sang s th c cho m t bi nể ể ữ ệ ố ự ộ ế
Ví d 11:ụ
1
2
3
4
5
<?php
$a= 123; // biến $a kiểu int
$a= (float)$a; // Biến $a lúc này kiểu số thực (float)
$a= (double)$a; // Biến $a lúc này kiểu ố thực (double)
?>
Ki m tra m t bi n ki u s th c ể ộ ế ể ố ự
ki m tra m t bi n ph i ki u s th c không b n dùng hàm
Để ể ộ ế ả ể ố ự ạ is_float($bien)để ể ki m tra cho ki u ể float, is_double($bien)để ể ki m tra cho ki u double K t qu 2 hàm này tr v TRUE n u úng, ể ế ả ả ề ế đ FALSE n u sai.ế
4 Ki u chu i ể ỗ
Các ki u d li u trong php thì ki u chu i mình g mể ữ ệ ể ỗ ồ ki u string (chu i) và char (ký t ), m i ký t làể ỗ ự ỗ ự
1 byte và là m t trong 256 ký t khác nhau, ộ ự để khai báo báo các b n ch vi c khai báo m t bi n và ạ ỉ ệ ộ ế gán giá tr chu i cho nó, chu i ph i ị ỗ ỗ ả được bao quanh b ng d u nháy ằ ấ đơn‘ ho c d u nháy képặ ấ “ Ép
ki u c ng nh trên ta dùng (string) ể ũ ư để chuy n sang ki u chu i.ể ể ỗ
Ví d 12ụ :
1 <?php
Trang 73
4
$a= 123; // khai báo biến $a kiểu int có giá trị 123
$a= (string)$a; //Chuyển biến $a thành kiểu chuỗi và có giá trị là '123'
?>
Ki m tra m t bi n ki u string ể ộ ế ể
ki m tra m t bi n ki u chu i (string) ta dùng hàm
Để ể ộ ế ể ỗ is_string($bien), k t qu hàm này tr v TRUE ế ả ả ề
n u úng và FALSE n u không úng.ế đ ế đ
N u b n mu n tìm hi u thêm v chu i thì có th xem bàiế ạ ố ể ề ỗ ể các hàm x lý chu i trong phpử ỗ
5 Ki u m ng (array) ể ả
M ng là danh sáchả các ph n t có cùng ki u d li u và nó là m t trong các ki u d li u trong php ầ ử ể ữ ệ ộ ể ữ ệ
có độ ph c t p tính toán cao Có 2 lo i m ng làứ ạ ạ ả m ng m t chi uả ộ ề ho cặ m ng nhi u chi uả ề ề Riêng v i ớ PHP thì các ph n t c a m ng có th không cùng ki u d li uầ ử ủ ả ể ể ữ ệ , và các ph n t c a m ng ầ ử ủ ả được truy
xu t thông qua các ch m c(v trí) c a nó n m trong m ng.ấ ỉ ụ ị ủ ằ ả
Kh i t o và truy xu t các h n t trong m ng ở ạ ấ ầ ử ả
khai báo m ng ta dùng cú pháp sau:
1
2
3
<?php
$ten_mang= array(); // khởi tạo một mảng gán vào biến $ten_mang
?>
Gi s tôi có 2 sinh viên là Nguy n V n A và Nguy n V n B, gi tôi s kh i t o m t ả ử ễ ă ễ ă ờ ẽ ở ạ ộ
m ngả $sinhvienđể ư l u 2 sinh viên này l i.ạ
NOTE: Các b n dùng hàm ạ var_dump($mang); để in ra các ph n t c a m ng ầ ử ủ ạ để test trong quá trình
h c nhé Hàm này có th s d ng ọ ể ử ụ đượ ấ ả c t t c các ki u d li u trong php ể ữ ệ
Cách 1:
1
2
3
4
<?php
$sinhvien= array('Nguyễn Văn A', 'Nguyễn Văn B');
print_r($sinhvien);
?>
Cách 2:
Trang 82
3
4
5
6
7
<?php
$sinhvien= array(
0 => 'Nguyễn Văn A',
1 => 'Nguyễn Văn B'
);
print_r($sinhvien);
?>
Cách 3:
1
2
3
4
5
6
<?php
$sinhvien= array();
$sinhvien[0] = 'Nguyễn Văn A';
$sinhvien[1] = 'Nguyễn Văn B';
print_r($sinhvien);
?>
Cách 4:
1
2
3
4
5
6
<?php
$sinhvien = array();
$sinhvien[] = 'Nguyễn văn A';
$sinhvien[] = 'Nguyễn Văn B';
print_r($sinhvien);
?>
C 4 cáchả đều có k t qu gi ng nhau nh ng cú pháp l i khác nhau.ế ả ố ư ạ
M ng có ch m c ả ỉ ụ
Là m ng có các ph n t ả ầ ử đượ địc nh danh m t ch m c (ki u s ) và b t ộ ỉ ụ ể ố ắ đầu b ng s 0 và ph n t ằ ố ầ ử
cu i cùng có ch m c làố ỉ ụ (n-1), trong ó n là t ng s ph n t c a m ng i u này có ngh a n u m ng đ ổ ố ầ ử ủ ả Đ ề ĩ ế ả
c a b n có 10 ph n t thì l n lủ ạ ầ ừ ầ ượt các v trí ph n t trong m ng là:ị ầ ử ả [0] – [1] – [2] – [3] – [4] – [5] – [6] – [7] – [8] – [9]
Trang 9Quay l i 4 cách gi i c a ví d trên:ạ ả ủ ụ
V i cách 1ớ : B n kh i t o m t m ng và gán tr c ti p 2 ph n t vào, vì m ng b t ạ ở ạ ộ ả ự ế ầ ừ ả ắ đầu t 0 nên nó t ừ ự
hi u ph n t ể ầ ử đầu tiên có ch m c =0, và ph n t th 2 = 1.ỉ ụ ầ ử ứ
V i cách 2ớ : B n kh i ta m t m ng và gán tr c ti p 2 ph n t vào, nh ng lúc gán b n có ghi rõ các ạ ở ọ ộ ả ự ế ầ ử ư ạ
ch m c cho t ng ph n t ỉ ụ ừ ầ ử
V i cách 3ớ : Ban kh i t o m t m ng r ng sau ó b n dùng 2 l nh ở ạ ộ ả ỗ đ ạ ệ để gán 2 ph n t vào, m i l nh ầ ử ỗ ệ gán b n có ch rõ ch m c.ạ ỉ ỉ ụ
V i cách 4ớ : B n kh i t o m t m ng r ng, sau ó b n dùng 2 l nh gán 2 ph n t vào nh ng b n l i ạ ở ạ ộ ả ỗ đ ạ ệ ầ ử ư ạ ạ không ch rõ ch m c, lúc này PHP s ki m tra th y m ng ang r ng nên ph n t ỉ ỉ ụ ẽ ể ấ ả đ ỗ ầ ử đầu tiên nó s m cẽ ặ
nh gán ch m c = 0, và ph n t ti p theo s b ng ph n t tr c nó + 1 t c là s = 1
Để truy xu t các ph n t c a m ng ch m cấ ầ ử ủ ả ỉ ụ ta dùng cú pháp sau: $tenmang[$index]; trong
ó
đ $index là ch m c b n mu n l y.ỉ ụ ạ ố ấ
Ví d 14:ụ
1
2
3
4
5
6
7
8
<?php
$sinhvien= array(
0 => 'Nguyễn Văn A',
1 => 'Nguyễn Văn B'
);
echo$sinhvien[0]; // Xuất ra màn hình phần tử 0 => Nguyễn Văn A
echo$sinhvien[1]; // Xuất ra màn hình phần tử 1 => Nguyễn Văn B
?>
M ng k t h p ả ế ợ
Là M ng có các ph n t ả ầ ử đượ địc nh danh b ng m t cái tên và ằ ộ đương nhiên v trí các ph n t s ị ầ ử ẽ không có th t ứ ự
Ví d 15:ụ
1
2
3
4
<?php
$sinhvien= array(
'sinhvien_a'=> 'Nguyễn Văn A',
'sinhvien_b'=> 'Nguyễn Văn B'
);
Trang 106
7
print_r($sinhvien);
?>
Tương t nh nh ng ví d ph n m ng có ch m cự ư ữ ụ ở ầ ả ỉ ụ , mình có thêm cách khai báo
1
2
3
4
5
6
<?php
$sinhvien= array();
$sinhvien['sinhvien_a'] = 'Nguyễn Văn A';
$sinhvien['sinhvien_b'] = 'Nguyễn Văn B';
print_r($sinhvien);
?>
Xét ví d sau:ụ
1
2
3
4
5
6
<?php
$sinhvien= array();
$sinhvien['sinhvien_a'] = 'Nguyễn Văn A';
$sinhvien['sinhvien_b'] = 'Nguyễn Văn B';
print_r($sinhvien);
?>
Trong ví d này i u ụ đ ề đặc bi t là lúc gán sinh viên Nguy n V n B ta không truy n tên cho nó mà ch ệ ễ ă ề ỉ dùng d uấ []để thêm vào i u gì s x y ra? Câu tr l i nh sau: Trình biên d ch s ch y dòng th 1Đ ề ẽ ả ả ờ ư ị ẽ ạ ứ
kh i t o m t m ng r ng, dòng th 2 thêm m t ph n t cho m ng v i tên sinhvien_a, dòng th 3 nó ở ạ ộ ả ỗ ứ ộ ầ ử ả ớ ứ
s th y ko có truy n ch m c nên nó s l u giá tr Nguy n V n B dẽ ấ ề ỉ ụ ẽ ư ị ễ ă ướ ại d ng ch m c Nó xét th y ỉ ụ ấ trong m ng này ch a có ch m c nào (vì dòng 2 truy n d ng k t h p), nên sinh viên Nguy n V n B ả ư ỉ ụ ề ạ ế ợ ễ ă
s ẽ đượ ấc l y ch m c = 0.ỉ ụ
Vi c truy xu t các ph n t trong m ng k t h p c ng tệ ấ ầ ử ả ế ợ ũ ương t nh m ng ch m c ta dùng cú pháp ự ư ả ỉ ụ sau: $tenmang[$name], trong óđ $name là tên c a ph n t b n mu n l y ra.ủ ầ ử ạ ố ấ
Ví d 16:ụ
1
2
<?php
$sinhvien= array();
$sinhvien['sinhvien_a'] = 'Nguyễn Văn A';
Trang 114
5
6
7
$sinhvien['sinhvien_b'] = 'Nguyễn Văn B';
echo$sinhvien['sinhvien_a']; // xuất ra màn hình sinh viên Nguyễn Văn A echo$sinhvien['sinhvien_b']; // xuất ra màn hình sinh viên Nguyễn Văn B
?>
M ng m t chi u ả ộ ề
T t c nh ng ví d trên g i là m ng 1 chi u (g m m ng 1 chi u chi m c, m ng m t chi u k t h p)ấ ả ữ ụ ở ọ ả ề ồ ả ề ụ ả ộ ề ế ợ
M ng nhi u chi u ả ề ề
Là m ng có nhi u ch m c cho t ng ph n t , ví d m ng 2 chi u thì m i ph n t có 2 ch muc, 3 ả ề ỉ ụ ừ ầ ử ụ ả ề ỗ ầ ử ỉ chi u thì m i ph n t có 3 ch m c, …ề ỗ ầ ử ỉ ụ
M ng nhi u chi u th c ch t c ng ch là m ng 1 chi u nh ng ả ề ề ự ấ ũ ỉ ả ề ư được th hi n dể ệ ướ ại d ng nhi u chi u.ề ề Xem hình minh h a m ng 2 chi u sau ọ ả ề được bi u hi n b ng s dòng và s c t (ngh a là 2 chi u ể ệ ằ ố ố ộ ĩ ề
gi ng trong hình h c không gian 2 chi u), m i ph n t s ố ọ ề ỗ ầ ử ẽ đượ địc nh v trí i m giao nhau c a ch ị ở đ ể ủ ỉ
s c t và dòng hi n t i.ố ộ ệ ạ
Ví d 17ụ : thêm ph n t trong m ng 2 chi u:ầ ử ả ề
1
2
<?php
$a= array();
$a[0][1] = 123;
Trang 124
5
$a[0][2] = 321;
?>
Ví d 18: truy xu t ph n t trong m ng 2 chi u:ụ ấ ầ ử ả ề
1
2
3
4
5
6
7
<?php
$a= array();
$a[0][1] = 123;
$a[0][2] = 321;
echo$a[0][1]; // in ra giá trị 123
echo$a[0][2]; // in ra giá trị 321
?>
Ki m tra m t bi n ki u m ng ể ộ ế ể ả
ki m tra m t bi n có ph i ki u m ng (array) không ta dùng hàm
Để ể ộ ế ả ể ả is_array($bien), hàm này tr v ả ề TRUE n u úng và FALSE n u không úng.ế đ ế đ
Nêu b n mu n tham kh o thêm v m ng thì có th ạ ố ả ề ả ể đọc bài các hàm x lý m ng trong phpử ả
6 Ki u giá tr Null ể ị
ây là ki u c bi t trong PHP và c ng nh các ngôn ng l p trình khác, nó mang giá tr r ng
Lúc b n kh i t o m t bi n và b n gán = NULL thì s h thông s không t n b nh ạ ở ạ ộ ế ạ ẽ ệ ẽ ố ộ ớ để ư l u tr , nên ữ
vi c s d ng nó r t có l i.ệ ử ụ ấ ợ
Ki u NULL khi ép ki u sang ki u INT thì b ng 0, khi ép ki u sang ki u chu i thì = r ng, và khi ép ể ể ể ằ ể ể ỗ ỗ sang ki u boolean thì mang giá tr FALSE.ể ị
Ví d 19:ụ
1
2
3
4
5
<?php
$a= null; // Khởi tạo biến $a và gán giá trị null
$b= (int)$a; // Biến $b có giá trị là ( 0 )
$c= (string)$a; // Biến $c có giá trị rỗng ( '' )
$d= (bool)$a; // Biến $d có giá trị FALSE
?>
Trang 13Ki m tra m t bi n có giá tr null ể ộ ế ị
ki m tra m t bi n có giá tr null hay không ta dùng hàm
Để ể ộ ế ị is_null($bien) Bi n này tr v TRUE n u ế ả ề ế úng và FALSE n u không úng
7 Ki u Object ( ể đố ượ i t ng)
Riêng ki u ể đố ượi t ng (Object) thì nó liên quan đến ki n th c l p trình nâng cao nên t m th i các ế ứ ậ ạ ờ
b n b qua ki u này nhé N u b n nào quan tâm thì có th xem t i seriesạ ỏ ể ế ạ ể ạ php nâng cao
8 K t thúc bài h c ế ọ