Ch±¡ng 1. Bi¿n 3 H¿ng Sß - Toán Tÿ -
Lßnh ißu Khißn
Trong tài lißu này, chúng ta s¿ khám phá vß bi¿n, h¿ng sß, toán tÿ và các lßnh ißu khißn.
L¿p trình PHP
hvluan.la@gmail.com
1
Khái Nißm Bi¿n Trong PHP
Bi¿n trong PHP ±ÿc sÿ dÿng ß l±u trÿ dÿ lißu, nh± sß, chußi vn b¿n, hay các ßi t±ÿng phÿc t¿p h¡n.
T±¡ng tÿ chi¿c hßp ±ÿc dán nhãn, bi¿n giúp b¿n tß chÿc và truy xu¿t thông tin trong ch±¡ng trình.
Cú Pháp Khai Báo Bi¿n
Tên bi¿n luôn b¿t ¿u b¿ng ký tÿ $ và theo sau là tên cÿa bi¿n. Tên bi¿n phân bißt chÿ hoa và chÿ th±ßng, và
chß có thß chÿa các ký tÿ chÿ cái, sß và d¿u g¿ch d±ßi (_). Tên bi¿n không b¿t ¿u b¿ng sß.
$ten_bien = giá_trß;
$hoTen = "Nguyßn Vn A";
$tuoi = 25;
$diem_trung_binh = 8.5;
Quy T¿c ¿t Tên Bi¿n
Luôn b¿t ¿u b¿ng ký tÿ $
Chß chÿa chÿ cái, sß và d¿u g¿ch d±ßi
Không ±ÿc b¿t ¿u b¿ng sß
Phân bißt chÿ hoa và chÿ th±ßng ($ten khác vßi $Ten)
Nên ¿t tên bi¿n có ý ngh)a, liên quan ¿n dÿ lißu mà nó l±u trÿ
Bi¿n có tính ßng, ngh)a là không c¿n ph¿i khai báo kißu dÿ lißu tr±ßc khi sÿ dÿng. PHP s¿ tÿ ßng chuyßn
ßi kißu dÿ lißu dÿa trên giá trß ±ÿc gán.
L¿p trình PHP
hvluan.la@gmail.com
2
Ph¿m Vi Bi¿n Trong PHP
Ph¿m vi cÿa bi¿n ß c¿p ¿n n¡i mà bi¿n có thß ±ÿc truy c¿p trong mã ngußn. Trong PHP, có ba lo¿i ph¿m
vi bi¿n chính: bi¿n cÿc bß (local), bi¿n toàn cÿc (global), và bi¿n t)nh (static).
function tinhTong() {
$a = 5; // Bi¿n cÿc bß
$b = 10; // Bi¿n cÿc bß
return $a + $b;
}
echo $a; // Lßi! Không thß truy c¿p bi¿n
cÿc bß tÿ bên ngoài hàm
Bi¿n Cÿc Bß (Local)
Bi¿n cÿc bß ±ÿc khai báo bên trong mßt hàm
và chß có thß truy c¿p trong ph¿m vi cÿa hàm
ó. Khi hàm k¿t thúc, bi¿n cÿc bß s¿ bß hÿy và
giá trß cÿa nó không còn ±ÿc l±u trÿ.
$x = 5; // Bi¿n toàn cÿc
function suDungBienToanCuc() {
global $x; // Khai báo sÿ dÿng bi¿n
toàn cÿc
echo $x;// Hißn thß giá trß 5
// Ho¿c sÿ dÿng m¿ng $GLOBALS
echo $GLOBALS['x']; // Cing hißn thß giá
trß 5
}
Bi¿n Toàn Cÿc (Global)
Bi¿n toàn cÿc ±ÿc khai báo bên ngoài t¿t c¿
các hàm và có thß ±ÿc truy c¿p tÿ b¿t kÿ âu
trong t¿p tin PHP. Tuy nhiên, ß sÿ dÿng bi¿n
toàn cÿc bên trong mßt hàm, b¿n c¿n sÿ dÿng
tÿ khóa global ho¿c m¿ng $GLOBALS.
function demSoLanGoi() {
static $dem = 0; // Bi¿n t)nh
$dem++;
echo "Hàm ã ±ÿc gßi $dem l¿n";
}
demSoLanGoi(); // Hißn thß: Hàm ã ±ÿc gßi 1 l¿n
demSoLanGoi(); // Hißn thß: Hàm ã ±ÿc gßi 2 l¿n
Bi¿n T)nh (Static)
Bi¿n t)nh là bi¿n cÿc bß nh±ng không bß hÿy khi hàm k¿t thúc. Giá trß cÿa bi¿n t)nh ±ÿc giÿ l¿i giÿa
các l¿n gßi hàm. ß khai báo bi¿n t)nh, sÿ dÿng tÿ khóa static.
L¿p trình PHP
hvluan.la@gmail.com
H¿ng Sß Trong PHP
H¿ng sß là nhÿng giá trß không thß thay ßi sau khi ±ÿc ßnh ngh)a. Khác vßi bi¿n, h¿ng sß giÿ nguyên giá trß
cÿa nó trong sußt thßi gian thÿc thi ch±¡ng trình. H¿ng sß th±ßng ±ÿc sÿ dÿng ß l±u trÿ các g trß không
ßi nh± c¿u hình hß thßng, các thông sß k¿t nßi c¡ sß dÿ lißu.
define("TEN_HANG", giá_trß);
define("PI", 3.14159);
define("WEBSITE_URL", "https://example.com");
define("MAX_USERS", 1000);
Sÿ dÿng hàm define()
Hàm define() là cách truyßn thßng và linh ho¿t nh¿t
ß ßnh ngh)a h¿ng sß. Hàm này có thß ±ÿc sÿ
dÿng trong mßi ngÿ c¿nh, kß c¿ bên trong các ißu
kißn ho¿c vòng l¿p.
const TEN_HANG = giá_trß;
const PI = 3.14159;
const WEBSITE_URL = "https://example.com";
const MAX_USERS = 1000;
Sÿ dÿng tÿ khóa const
Tÿ khóa const ±ÿc gißi thißu tÿ PHP 5.3 và chß có
thß ±ÿc sÿ dÿng ß c¿p ß toàn cÿc ho¿c trong khai
báo lßp. Không thß sÿ dÿng const bên trong các
hàm, vòng l¿p ho¿c ißu kißn if.
¿c ißm Cÿa H¿ng Sß
Không c¿n ký tÿ $ ÿng tr±ßc tên h¿ng sß
Có thß truy c¿p tÿ b¿t kÿ âu trong mã ngußn mà không c¿n tÿ khóa global
Giá trß không thß thay ßi sau khi ã ßnh ngh)a
Thông th±ßng, tên h¿ng sß ±ÿc vi¿t hoàn toàn b¿ng chÿ hoa ß dß phân bißt vßi bi¿n
Chß có thß chÿa các giá trß vô h±ßng (scalar) nh± sß, chußi, boolean ho¿c NULL
PHP cing cung c¿p mßt sß h¿ng sß ±ÿc ßnh ngh)a s¿n nh± __FILE__, __LINE__, __DIR__,
PHP_VERSION, PHP_OS. Nhÿng h¿ng sß này cung c¿p thông tin vß môi tr±ßng PHP ang ch¿y.
L¿p trình PHP
hvluan.la@gmail.com
4
define("DB_HOST",
"localhost");
define("DB_USER", "root");
H¿ng Sß C¿u Hình
L±u trÿ thông tin c¿u hình hß
thßng nh± URL, thông sß k¿t
nßi.
define("PI", 3.14159);
define("G", 9.8);
H¿ng Sß Toán Hßc
Các giá trß toán hßc không ßi.
define("STATUS_ACTIVE", 1);
define("ERROR_NOT_FOUN
D", 404);
H¿ng Sß Tr¿ng Thái
Bißu thß các tr¿ng thái ho¿c mã
lßi.
define("ROOT_PATH",
__DIR__);
define("UPLOAD_DIR",
"uploads");
H¿ng Sß ±ßng D¿n
L±u trÿ ±ßng d¿n th± mÿc.
Kißu Dÿ Lißu Trong PHP
Là ngôn ngÿ có kißu dÿ lißu ßng, ngh)a là không c¿n ph¿i khai báo kißu dÿ lißu khi t¿o bi¿n.
Kißu Vô H±ßng (Scalar Types)
Integer: Sß nguyên nh± 123, -456
Float/Double: Sß thÿc nh± 3.14, -2.718
Boolean: Giá trß true ho¿c false
String: Chußi ký tÿ nh± "Hello, World!"
Kißu Hÿp Thành (Compound Types)
Array: M¿ng l±u trÿ nhißu giá trß
Object: ßi t±ÿng trong l¿p trình h±ßng ßi
t±ÿng
Kißu ¿c Bißt (Special Types)
NULL: Bißu thß bi¿n không có giá trß
Resource: Tham chi¿u ¿n tài nguyên bên ngoài
Kißu Integer (Sß Nguyên)
Kißu Integer ¿i dißn cho các sß nguyên không có ph¿n th¿p phân. PHP có thß hißn thß sß nguyên trong các
hß c¡ sß khác nhau: th¿p phân (c¡ sß 10), th¿p lÿc phân (c¡ sß 16), bát phân (c¡ sß 8) và nhß phân (c¡ sß 2).
$decimal = 123; // sß th¿p phân
$hexadecimal = 0x1A; // sß th¿p lÿc phân (t±¡ng ±¡ng 26 trong hß th¿p phân)
$octal = 0123; // sß bát phân (t±¡ng ±¡ng 83 trong hß th¿p phân)
$binary = 0b1010; // sß nhß phân (t±¡ng ±¡ng 10 trong hß th¿p phân)
Kißu Float (Sß Thÿc)
Kißu Float (ho¿c Double) bißu dißn các sß có ph¿n th¿p phân ho¿c sß ±ÿc bißu dißn ß d¿ng khoa hßc.
$a = 1.234;
$b = 3e2; // 3 * 10^2 = 300
$c = 4E-2; // 4 * 10^(-2) = 0.04
Kißu Boolean
Boolean ¿i dißn cho mßt trong hai giá trß: TRUE ho¿c FALSE. Trong ngÿ c¿nh cÿa ißu kißn, các giá trß sau
±ÿc xem là FALSE:
Chính giá trß boolean FALSE
Sß nguyên 0
Sß thÿc 0.0
Chußi rßng "" ho¿c chußi "0"
M¿ng rßng
ßi t±ÿng không có thußc tính nào
Giá trß NULL
T¿t c¿ các giá trß khác ±ÿc xem là TRUE.
L¿p trình PHP
hvluan.la@gmail.com