Bài 4. Biến trong PHP

Lượt xem: 8428

Biến là “hộp đựng” (containers) để chứa thông tin.

1. Tạo (khai báo) biến trong PHP

Trong PHP một biến bắt đầu bằng dấu $, theo sau là tên của biến.

Ví dụ:


< ?php
$txt = "Xin chào các bạn!";
$x = 5;
$y = 10.5;
?> 

Sau khi thực hiện khai báo các biến trên, biến $txt sẽ giữ giá trị là Xin chào các bạn!, biến $x sẽ giữ giá trị là 5, biến $y sẽ giữ giá trị là 10.5.

Lưu ý: khi bạn gán giá trị văn bản cho một biến bạn phải đặt chúng vào trong ngoặc kép. Không giống như các ngôn ngữ lập trình khác, PHP không có lệnh khai báo một biến. Nó được tạo ra khi lần đầu tiên bạn gán giá trị cho nó.

2. Biến trong PHP

Một biến có thể là một tên ngắn như x và y hoặc có tên mô tả nhiều hơn như: tuoi, vidanh, tong_cot

Quy định cho các biến PHP:

- Một biết bắt đầu với dấu $, theo sau là tên biến.

- Một tên biến phải bắt đầu bằng chữ cái hoặc ký tự gạch dưới.

- Một tên biến không bắt đầu với một số.

- Một tên biến chỉ có thể chứa ký tự chữ và số, dấu gạch dưới (A-z,0-9 và _)

Lưu ý: tên biến có phân biệt chữ hoa chữ thường ($tuoi và $TUOI là hai biến khác nhau).

3. Biến đầu ra

Trong PHP câu lệnh echo thường được dùng để xuất dữ liệu ra màn hình.

Ví dụ sau sẽ cho thấy làm thế nào để xuất một biến chứa văn bản.


< ?php
$txt = "Blog chia sẻ kiến thức lập trình đơi giản";
echo "Tôi yêu $txt!";
?> 

Hoặc ví dụ sau tương đương với ví dụ trên


< ?php
$txt = "Blog chia sẻ kiến thức lập trình đơi giản";
echo "Tôi yêu”.$txt.”!";
?> 

Ví dụ tiếp theo xuất ra tổng của hai biến


<?php
$x = 3;
$y = 6;
echo $x + $y;
?> 

Lưu ý: Bạn sẽ tìm hiểu thêm về các báo cáo echo và làm thế nào để xuất dữ liệu ra màn hình trong các bài tiếp theo.

4. PHP là một ngôn ngữ có kiểu dữ liệu lỏng lẻo

Trong ví dụ trên, nhận thấy rằng chúng ta không nói cho PHP kiểu dữ liệu của biến. PHP sẽ tự động chuyển đổi cho đúng kiểu dữ liệu tùy thuộc vào giá trị của nó.

Trong ngôn ngữ khác như C, C++ và Java, lập trình viên phải khai báo tên và kiểu biến trước khi sử dụng chúng.

5. Phạm vi biến trong PHP

Trong PHP, các biến được khai báo bất cứ nơi nào trong kịch bản. Phạm vi của biến là một phần của kịch bản mà biến có thể tham chiếu/sử dụng.

PHP có ba phạm vi biến khác nhau.

- Địa phương (local)

- Toàn cầu (global)

- Tĩnh (static)

a. Phạm vi biến toàn cầu (global) và biến địa phương hay biến cục bộ (local)

Một biến khai báo bên ngoài một hàm có PHẠM VI TOÀN CẦU và chỉ có thể được truy cập bên ngoài một chức năng:


<?php
$x = 5; // phạm vi toàn cầu
function myTest() {
    // sử dụng $x bên trong hàm này sẽ xảy ra một lỗi
    echo "<p>Biến x trong hàm là: $x</p>";
} 
myTest();
echo "<p>Biến x ngoài hàm là: $x</p>";
?> 

Một biến được khai báo trong một hàm có phạm vi địa phương chỉ được phép truy cập trong hàm.

Ví dụ:


<?php
function myTest() {
    $x = 5; // phạm vi địa phương
    echo "<p>Biến x trong hàm là: $x</p>";
} 
myTest();

//Sử dụng $x ngoài hàm sẽ tạo ra một lỗi.
echo "<p>Biến x ngoài hàm là: $x</p>";
?> 

Lưu ý: Bạn có thể có các biến địa phương (cục bộ) có cùng tên trong các hàm khác nhau, bởi vì các biến cục bộ chỉ được công nhận bởi các hàm trong đó chúng được khai báo.

b. Các từ khóa toàn cầu trong PHP

Các từ khóa toàn cầu được sử dụng để truy cập vào một biến toàn cầu trong một hàm. Để làm điều này, sử dụng từ khóa toàn cầu trước khi khái báo biến toàn cục trong hàm.


<?php
$x = 5;
$y = 10;

function myTest() {
    global $x, $y;
    $y = $x + $y;
}

myTest();
echo $y; // kết quả 15
?> 

PHP cũng lưu trữ tất cả các biến toàn cầu trong một mảng gọi là $GLOBALS[chỉ số]. Các chỉ số giữa tên của biến. Mảng này có thể truy cập từ bên trong hàm và có thể được sử dụng để cập nhật trực tiếp các biến toàn cầu

Ví dụ trên có thể được viết lại như sau:


<?php
$x = 5;
$y = 10;

function myTest() {
    $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
} 

myTest();
echo $y; // kết quả 15
?> 

c. Từ khóa tĩnh (statics) trong PHP

Thông thường khi một hàm được thực thi/hoàn thành, tất cả các biết của nó sẽ được xóa đi. Tuy nhiên, đôi khi chúng ta muốn một biến địa phương không được xóa. Chúng ta cần sử dụng nó tiếp.


<?php
function myTest() {
    static $x = 0;
    echo $x;
    $x++;
}

myTest();
myTest();
myTest();
?> 

Sau đó, mỗi khi hàm được gọi, biến đó sẽ vẫn còn có những thông tin mà nó chứa từ lần cuối cùng các hàm được gọi.

Lưu ý: Các biến vẫn là biến địa phương trong hàm.

Theo w3c