Bài 4: Khai báo biến trong PHP

Lập trình PHP    2020-09-01

Biến là gì?

Biến là một cái tên được định danh dùng để lưu trữ giá trị tạm thời trong khi chương trình chạy. Một biến sẽ được cấp phát các ô nhớ tương ứng trong bộ nhớ của máy tính khi biến được khai báo.

Ở trong một phạm vi khối lệnh, chương trình, một tên biến phải được định danh là duy nhất và không được đặt tên trùng với các từ khóa của ngôn ngữ lập trình đã định nghĩa sẵn. 

Bạn hoàn toàn được tự do đặt tên biến, nhưng phải theo quy chuẩn chung tránh gây lỗi. Có nhiều ký tự không hợp lệ khi sử dụng đặt tên biến.

Vậy nên bạn chỉ sử dụng các ký tự chữ cái a-z, A-Z, 0-9, dấu gạch nối (_) để đặt tên cho biến.

- Tên biến không chứa dấu cách, chỉ bắt đầu bằng chữ cái hoặc ký tự gạch dưới (không bắt đầu bằng số nhé)
- Tên biến nên đặt cho có ý nghĩa và mô tả được mục đích sử dụng
- Thường tên biến viết theo kiểu: Ký tự đầu tiên viết thường hoặc gạch dưới, các ký tự đầu tiên của từ tiếp theo sẽ viết hoa, còn lại viết hết là chữ thường.

Biến trong PHP

Trong PHP tên biến khi còn phải thêm 1 ký tự $ ở đầu chuỗi. Đây là ký tự để PHP phân biệt đó là biến. VD khai báo biến đặt tên là hoTen như sau: 

<?php

$hoTen = "Nguyen Van A";

$tuoi = 26;

$diemTongKet = 9.5;

// in ra màn hình: 


echo "Ho ten: $hoTen, Tuoi: $tuoi, Diem: $diemTongKet";

?>

Tính toán với biến

Để thực hiện các phép tính hoặc trình bày dữ liệu... bạn có thể sử dụng tên biến làm đại diện để tính toán. Ví dụ với phép tính đơn giản sau:

<?php

$x = 5;  // khai báo biến x và gán giá trị cho x là 5
$y = 4;  // khai báo biến y và gán giá trị cho y là 4


$tong = $x + $y;  // khai báo biến tổng và thực hiện phép tính cộng giá trị của 2 biến

echo $tong; // in kết quả ra màn hình

?>

Trong PHP bạn có thể thoải mái khai báo biến mà không cần chỉ ra kiểu dữ liệu. Bạn gán dữ liệu kiểu số thì sẽ tự nhận kiểu số, gán là chuỗi thì tự nhận kiểu dữ liệu chuỗi.

Phạm vi hoạt động của biến

Trong PHP bạn có thể khai báo biến ở bất kỳ đâu.

Phạm vi hoạt động của biến là giới hạn khu vực code mà một biến có thể được sử dụng và tham chiếu. 

Có 3 phạm vi của biến:
- local (cục bộ)
- global (toàn cục)
- static (biến tĩnh)
 

Phạm vi toàn cục (global) và phạm vi cục bộ (local)

Bạn hãy chạy đoạn code dưới đây và quan sát kết quả 

Code 1:

<?php
$x = 5; // global 

function myTest() {
  // Biến sử dụng trong hàm này sẽ báo lỗi vì x khai báo ở vùng ngoài
  echo "<p>Biến x gọi ở trong hàm: $x</p>";
}
myTest();

echo "<p>Biến x gọi ở ngoài hàm: $x</p>";
?>

Bây giờ chạy tiếp đoạn code dưới nhé

Code 2:

<?php
function myTest() {
  $x = 5; //biến khai báo ở phạm vi cục bộ
  echo "<p>Biến x được gọi ở trong hàm: $x</p>";
}
myTest();

// sử dụng x ở ngoài hàm sẽ có lỗi 
echo "<p>Biến x được gọi ở ngoài hàm: $x</p>";
?>

Và tiếp đến bạn hãy đối chiếu 2 kết quả chạy 2 ví dụ trên nhé.

Sử dụng từ khóa global để tham chiếu biến ở phạm vi toàn cục

Để giải quyết lỗi cho code 1 ở trên bạn sử dụng từ khóa global bên trong hàm

<?php
$x = 5; // global 

function myTest() {
  global $x;
  // Biến sử dụng trong hàm này sẽ không báo lỗi nữa vì có global rồi
  echo "<p>Biến x gọi ở trong hàm: $x</p>";
}
myTest();

echo "<p>Biến x gọi ở ngoài hàm: $x</p>";
?>

Đối với code 2 thì không dùng được global để xử lý nhé, bạn có thể dùng giải pháp return, sau này nghiên cứu hàm sẽ nói vấn đề này.

Làm việc với từ khóa static

Bình thường các biến sẽ được hủy để giải phóng bộ nhớ mỗi khi khối lệnh được thực thi xong (nếu là biến khai báo ở trong một phạm vi nào đó nhé)

Nhưng có nhiều khi chúng ta cần giữ lại biến để làm nhiều việc khác. Vậy thì sử dụng từ khóa static để khai báo đó là biến tĩnh.

Bạn chạy thử ví dụ bên dưới để tìm hiểu tác dụng

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

myTest();

echo "<br>";

myTest();

echo "<br>";

myTest();

?>

Trong ví dụ trên lần 1 thì x = 0, nhưng các lần gọi tiếp theo x được tăng thêm vì cộng thêm giá trị của lần gọi hàm trước đó.

Chúng ta sẽ tiếp tục trong các bài viết tiếp theo nhé.