19:29
20/05/24
Like để cập nhật nhiều truyện hay trên Facebook nhé
HotBạn muốn tải các game hay? Hãy truy cập:Vietnam.Teamobi.Com.Vntrang web TeaMobi đại lí vietnam phân phối bởi ©2Xinh™
Vừa qua, ở bài nói về mảng chúng
ta thấy có sự xuất hiện của một
hàm có tên là count(hàm này trả về
độ dài của mảng đó).
Trong PHP có rất nhiều những hàm
dựng sẵn như thế, giúp ta giải
quyết được nhiều tình huống trong
lập trình web dễ dàng hơn.bên
cạnh những hàm có sẵn đó, ta cũng
có thể tự soạn thảo các hàm cho
riêng mình.
Mục đích của việc tự soạn thảo các
hàm là cho đỡ mõi tay, dễ hiệu
chỉnh.
Các bạn hãy tưỡng tượng ta có một
hành động A, hành động A là tập
hợp bao gồm rất nhiều hành động
khác.
Và trên cả trang web, ta biết rằng
sẽ có nhiều hơn 3 lần ta thực hiện
lại hành động A đó, vệc đưa hành
động đó trỡ thành một hàm sẽ là
một bước đi khôn ngoan và rất "lập
trình viên".
________________________
Xét ví dụ bạn đơn giãn muốn in ra
một nghìn câu:
Anh yêu em.
Mọi chuyện sẽ đơn giản hoá với
vòng lặp (các bạn vẫn còn nhớ chứ).
for($i=0;$i<1001;$i++)
{
echo"<b>Anh yêu em</b><br />";
}
Nhưng mà sẽ khá dài cho trường
hợp: 100 cấu Anh yêu em., tiếp theo
lại là 1000 câu Em có yêu anh
không!?, lại 1000 câu.......
Để khai báo hàm - function trong
php ta có cú pháp như sau:
Mã nguồn:[Chọn]
function <tên hàm>()
{
//Nội dung các câu lệnh sẽ nàm
trong hai dấu ngoặc nhọn này
}
Với ví dụ trên, mình sẽ viết một
hàm có công dụng in ra 1000 câu
Anh yêu em.như sau:
functionsayiloveyou()
{
for($i=0;$i<1001;$i++)
{
echo"<b>Anh yêu em</b><br />";
}
}
Mình đã đặt tên cho hàm này là
hàm sayiloveyou và bất cứ khi nào,
ở bất cứ đâu trên trang web, mình
muốn in ra 1000 câu Anh yêu
em.mình chỉ việc gọi hàm này (gọi
nói nghe cho nó giống lập trình
viên, chứ có nghĩa là viết nó ra
thôi!)
<?php
functionsayiloveyou()
{
for($i=0;$i<1001;$i++)
{
echo"<b>Anh yêu em</b><br />";
}
}
sayiloveyou();
echo"Đẵ in ra 100 câu đầu tiên,
không biết em có hiểu rõ tình cảm
của anh chư, in tiếp<br />";
sayiloveyou();
?>
Hàmsayiloveyou()của chúng ta vừa
mới viết, lại không giống như cái
hàm count()đã nêu ra từ đầu bài ở
chỗ hàm count nhận vào một tham
số bên trong cặp dấu ngoặc, những
bài tiếp theo của chúng ta sẽ nói về
mấy cái mà mình gọi là "tham số"
này.
À xin nói thêm, nếu có ai định dùng
tin học để chinh phục nữa kia, thì
các trên của mình còn dỡ lắm, mình
nghĩ cách tốt nhất là học viết phần
mềm, hay virus gì đó, chứ web thì
hiệu quả không bàng.
Vấn đề để nãy sinh ra mấy cái tham
số này là, có uổn quá không khi mỗi
lần ghi là có 1000 câu giống nhau,
1000 lần thì nhiều thiệt, nhưng mà
lại không có tác dụng đả kích mục
tiêu, phải là
1000 câu Anh yêu em.
rồi 1000 câu Em là mặt trời của anh.
rồi 1000 câu Anh phải đeo kính râm
khi em hé môi cười.
thì may ra nàng còn say sẫm mặt
mài.
Ta nhận thấy ngây bất cập, hàm
được đặt ra để rút ngắn công việc,
nhưng nếu cứ mỗi câu như thế mà
viết một hàm thì nó chỉ làm mọi
chuyện rắc rối thêm.
Và ý tưởng dẫn tới....
xem ví dụ:
functionsayiloveyou()
{
for($i=0;$i<1001;$i++)
{
echo"<b>Anh yêu em</b><br />";
}
}
Đó là đoạn code củ, sửa nó lại một
chút, các bạn chú ý tới những điểm
khác biệt nhé:
functionsayiloveyou($loinoi)
{
for($i=0;$i<1001;$i++)
{
echo$loinoi;
}
}
Mình đã thêm vào ở giữa 2 dấu
ngoặc () một biến $loinoi, và ở
dòng echo thay vì nội dung là câu
nói thì nội dung ở đấy lại là biến
$loinoi.
Để gọi hàm lúc này và in ra 1000 câu
Anh yêu em.ta gọi như sau:
<?php
functionsayiloveyou($loinoi)
{
for($i=0;$i<1001;$i++)
{
echo$loinoi;
}
}
sayiloveyou("Anh yêu em.<br />");
?>
giải thích cho việc này chính là khi
gọi hàm
sayiloveyou("Anh yêu em.<br />")
thì phần nội dung"Anh yêu em.<br /
>"được gán cho biến $loinoi khá là
đơn giản [phải không mọi người.Ta
cũng có thể viết một hàm với nhiều
tham số nhận vào, ví dụ như ngoài
việc tuỳ biến sẽ in ra cái chi, ta có
thể tuỳ biếm thêm số lầm in ra.
functionsayiloveyou($loinoi,
$solan)
{
for($i=0;$i<$solan;$i++)
{
echo$loinoi;
}
}
Khi gọi hàm này, ta lần lượt cho vào
hai giá trị tương ứng theo đúng
thứ tự:
sayiloveyou("Anh yêu em.<br /
>",999);
Cho tới lúc này thì để chinh phục cô
ấy với cấu trúc hàm, mọi việc chỉ
còn tuỳ thuộc vào ý tưởng của bạn
nữa thôi nói đùa thế cho vui, chứ
thật ra có một câu nói như thế này:
Rào cản hiện thời không phải là
công nghệ mà là ý tưởng.
Những kiến thức trên rất là cơ bản,
nhưng lại nắm giữ những sức
mạnh rất lớn.
Khái niệm biến toàn cục và biến cục
bộ chắc các bạn cũng đã từng nghe
qua, trong rất nhiều ngôn ngữ khác
nhau. trong PHP cũng không loại
trừ.
Khác biệt lớn nhất của biến toàn
cục và biến cục bộ có thể thấy ngay
ở các ví dụ về fuction. ta xét đoạn
mã:bạn hãy chạy thử đoạn mã, chỉ
có1 từ "Chữ viết" được in ra.
<?php
functionvietchu()
{
$chu="Chữ viết";
echo$chu;
}
vietchu();
echo$chu;
?>
Hàm vietchu() thực hiện 2 động tác:
1 gán chuỗi"Chữ viết"cho biến
$chu, 2 in ra biến $chu
Vậy tại sao khi với dòng lệnh tiếp
theo (echo$chu; ) lại không hề cho
ra bất cứ kết quả nào?
Câu trả lời mà cho tới lúc này chắc
các bạn ai cũng đoán được:
$chu chỉ là biến cục bộ, chỉ có hiệu
lực bên trong hàm.
Việc người ta chế ra 2 loại biến này
cũng có lý do, ví dụ như khỏi lo bị
trùng các biến nếu trong cùng một
file mà có nhiều hàm. Nhắm cái nào
cần giữ giá trị lại thì giữ, đỡ tốn cấu
hình.ở đây, nếu bạn muốn xác định
biến nào sẽ là biến toàn cục thì hãy
khai báo các biến đó sau từ khoá
global
functionvietchu()
{
global$chu;
$chu="Chữ viết";
echo$chu;
}
và thêm một lưu ý, biến đã được
gán giá trị bên ngoài, đưa vào
trong hàm cũng không có giá trị
(nói chung nếu mà không khai báo
biến toàn cục thì "nội bất xuất,
ngoại bất nhập".
Ví dụ:
<?php
$viet="Việt nam";
functionvietchu()
{
$chu="Chữ viết ".$viet;
echo$chu;
}
vietchu();
?>
hàm này chỉ in ra hàm chử viết, để
có thể in ra nguyên câu :
Chữ viết Việt Nam
như ta mong muốn thì hãy khai báo
biến toàn cục cho
$viet="Việt nam";
functionvietchu()
{
global$viet;
$chu="Chữ viết ".$viet;
echo$chu;
}
Đây chỉ là một ví dụ đơn giản, trong
thực tế, vấn đề này được dùng tới
rất nhiều, trong thời gian và va
chạm, bạn sẽ thấy cái gì càng cơ
bản lại càng quan trọng.
lại bàn tới hàm count ở bài trước ta
nhận thấy thêm một điều rằng hàm
count trả về một giá trị số có thể
đem ra tính toán luôn.
for($i=0;$i<count($mang);$i++)
{
echo$mang[$i]."<br />";
}
Hàm count không như các hàm mà
ta đã tự viết từ trước đến giờ,nó
chả đưa ra màn hình cái gì cả,mà trả
về cho bản thân nó một giá trị. (Ở
đây nếu bạn nào đã học qua pascal
chắc chắn sẽ hiểu rất rỏ sự khác
biệt giữa hàm và thủ tục).Ta cũng
có thể làm được điều đó.Ví dụ,
mình sẽ viết một hàm tính tổng hai
số. hàm này nhận vào 2 tham số,
tính tổng của chúng và trả về giá trị
cho chính nó.
functiontonghaiso($a,$b)
{
$c=$a+$b;
return$c;
}
Dòng :return$c; là dòng quan trọng
nhất bài này mà mình muốn nói tới,
từ khoá return sẽ gán một giá trị
nào đó cho hàm.
Hãy xét ví dụ tính toán này, các bạn
sẽ hiểu rõ hơn!
<?php
functiontonghaiso($a,$b)
{
$c=$a+$b;
return$c;
}
echotonghaiso(3,5);
echo"<br />";
echotonghaiso(3,tonghaiso(3,5));
?>
Kết quả sẽ là:
8
17
11