Biến

Biến, kiểu dữ liệu và toán tử

Biến là “container” cho việc lưu trữ thông tin.

Khai báo biến

Trong PHP, một biến bắt đầu bằng ký hiệu $, theo sau là tên biến.

Hãy quan sát cách khai báo biến dưới đây:

<?php
  $txt = "Hello world!";
  $x = 5;
  $y = 10.5;
?>

Sau khi thực thi khối lệnh trên, biến $txt sẽ chứa giá trị Hello world!, biến $x chứa giá trị 5 và biến $y chứa giá trị 10.5

Lưu ý:

  • Khi gán một chuỗi cho một biến, đặt chuỗi đó trong dấu nháy ” “
  • Không giống như các ngôn ngữ lập trình khác, PHP không có lệnh cho định nghĩa một biến. Biến được tạo tại thời điểm gán giá trị cho nó.

Đặt tên cho biến

Một biến có thể là một tên ngắn (x, y) hoặc là một cái tên mô tả (age, carname, total_volume).

Quy tắc đặt tên biến PHP:

  • Một biến phải bắt đầu bằng ký tự $, theo sau là tên của biến
  • Tên biến phải bắt đầu bằng ký tự (A-Za-z) hoặc dấu gạch dưới _
  • Tên biến không được bắt đầu bằng một số (0-9)
  • Theo sau ký tự đầu tiên có thể là các ký tự thuộc (A-z, 0-9, _ )
  • Tên biến có phân biệt chữ hoa thường (biến $age và $AGE là hai biến khác nhau)

Các biến đầu ra (Output variables)

Lệnh echo được sử dụng thường xuyên để xuất dữ liệu ra màn hình.

Quan sát ví dụ dưới đây sẽ hiển thị một chuỗi với giá trị của một biến.

<?php
  echo "I love W3Schools.com!";
?>

Quan sát ví dụ bên dưới sẽ hiển thị kết quả đầu ra giống như ví dụ trên:

<?php
  $txt = "W3Schools.com"; echo "I love " . $txt . "!";
?>

Quan sát ví dụ dưới đây sẽ hiển thị tổng của hai biến:

<?php
  $x = 5;
  $y = 4;
  echo $x + $y;
?>

Lưu ý: Bạn sẽ học nhiều hơn về lệnh echo và cách hiển thị dữ liệu đầu trong các chương tiếp theo.

PHP là một kiểu ngôn ngữ lỏng lẻo (loosely typed language)

Trong ví dụ ở trên, lưu ý rằng chúng ta không nói về kiểu dữ liệu của các biến. PHP sẽ tự động chuyển đổi một biến tới kiểu dữ liệu chính xác của nó, phụ thuộc vào giá trị mà nó được gán.

Trong các ngôn ngữ khác như là C, C++, và Java một lập trình viên phải bắt buộc định nghĩa tên biến và kiểu dữ liệu của biến trước khi sử dụng.

Phạm vi các biến PHP

Trong PHP, các biến có thể định nghĩa ở mọi nơi trong kịch bản. Một phạm vi của biến là một phần của một kịch bản nơi một biến được tham chiếu/sử dụng tới.

PHP có 3 mức phạm vi khác nhau:

  • Cục bộ (local)
  • Toàn cục (global)
  • Tĩnh (static)

Phạm vi cục bộ và toàn cục

Một biến có phạm vi toàn cục khi chúng được khai báo ở bên ngoài các hàm và chỉ có thể truy cập từ bên ngoài hàm.

<?php
  $x = 5; /* global scope */
  function myTest() {
     /* sử dụng biến x ở bên trong hàm sẽ sinh ra lỗi */
     echo "<p>Variable x inside function is: $x</p>";
  }
  myTest();
  echo "<p>Variable x outside function is: $x</p>"; 
?>

Một biến được khai báo bên trong một hàm, biến đó có phạm vi cục bộ và chỉ có thể truy cập bên trong hàm đó.

<?php
  function myTest() {
     $x = 5; /* local scope */
     echo "<p>Variable x inside function is: $x</p>";
  }
  myTest();
  /* sử dụng biến x ở bên ngoài khối lệnh sẽ sinh ra lỗi */ 
  echo "<p>Variable x outside function is: $x</p>"; 
?>

Bạn có thể có nhiều biến cục bộ cùng giống tên nhưng nằm trong các hàm khác nhau, bởi vì biến cục bộ chỉ được nhận dạng bên trong hàm mà đã khai báo nó.

Từ khóa global

Từ khóa global được sử dụng để truy cập tới biến toàn cục bên trong một hàm. Để thực hiện được điều này, chúng ta sử dụng từ khóa global trước tên biến.

Ví dụ:

<?php
  $x = 5;
  $y = 10;
  function myTest() {
     global $x, $y;
     $y = $x + $y; 
  }  
  myTest(); 
  echo $y; /* outputs 15 */ 
?>

PHP lưu trữ tất cả các biến cục bộ trong một mảng gọi là $GLOBALS[index], với index chứa tên của biến. Mảng này được 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ục.

Ví dụ:

<?php
  $x = 5;
  $y = 10;
  function myTest() {
     $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y']; 
  }
  myTest();
  echo $y; /* outputs 15 */
?>

Từ khóa static

Thông thường, khi một hàm đã cài đặt và đã thực thi xong, tất cả các biến bị xóa. Đôi lúc chúng ta muốn một biến cục bộ không bị xóa. Vì chúng ta cần sử dụng cho một công việc khác.

Để thực hiện được điều này, sử dụng từ khóa static khi bạn định nghĩa lần đầu một biến.

Ví dụ:

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

Sau đó, mỗi lần hàm này được gọi, biến đó sẽ vẫn còn thông tin từ lần gọi hàm trước đó.

Leave a Reply

Your email address will not be published.