Cách chính để lưu trữ thông tin trong chương trình PHP là sử dụng một biến.

Dưới đây là những điều quan trọng nhất bạn nên biết về biến trong PHP.

  • Tất cả các biến trong PHP đều được kí hiệu với dấu $ ở đầu.

  • Giá trị của một biến là giá trị của phép gán gần đây nhất của nó.

  • Các biến được gán với toán tử =, biến ở bên trái còn biểu thức được ước lượng ở bên phải.

  • Biến có thể, nhưng không cần, được khai báo trước khi gán giá trị.

  • Biến trong PHP không có các kiểu nội tại, tức là một biến không biết trước có hay không nó sẽ được sử dụng để lưu trữ một số hoặc một chuỗi ký tự.

  • Biến, được sử dụng trước khi chúng được gán, có các giá trị mặc định.

  • PHP làm rất tốt việc chuyển đổi tự động từ kiểu này sang kiểu khác khi cần thiết.

  • Biến trong PHP giống với Perl.

PHP có tổng tất cả 8 kiểu dữ liệu mà chúng ta sử dụng để xây dựng các biến.

  • Integer − số nguyên. Ví dụ 1989

  • Double − số thực. Ví dụ 3.14159 hay 49.1.

  • Boolean − có 2 giá trị TRUE hoặc FALSE.

  • NULL − là một kiểu đặc biệt, nó chỉ có giá trị: NULL

  • String − là chuỗi các kí tự.

  • Array − là tập hợp được đặt tên và lập chỉ mục của các giá trị khác.

  • Object − là instance (sự thể hiện) của các lớp mà lập trình viên tự định nghĩa, nó có thể đóng gói các các loại giá trị và hàm khác nhau, nó dành riêng cho các lớp.

  • Resource − là một biến đặc biệt nó giữ tham chiếu tới các tài nguyên ngoại vi đến PHP (ví dụ: kết nối Database).

5 kiểu đầu tiên là các kiểu biến đơn giản, 2 kiểu tiếp theo (array và object) là các kiểu phức hợp mà có thể đóng gói các giá trị tùy ý của các kiểu tùy ý, trong khi các kiểu đơn giản không làm được.

Trong chương này, chúng ta sẽ giải thích các kiểu biến đơn giản. Array và Object sẽ được giải thích riêng rẽ trong các chương sau.

Kiểu số nguyên trong PHP

Chúng là tất cả các số, bao gồm cả nguyên âm và nguyên dương, nhưng không bao gồm số thực. Nó là kiểu đơn giản nhất. Chúng có thể được gán cho một biến hoặc được sử dụng trong biểu thức như sau:

$bien_int = 12345;
$bien_int_khac = -12345 + 12345;

Kiểu số nguyên có thể trong hệ thập phân, hệ bát phân và hệ thập lục phân. Mặc định là hệ thập phân, hệ bát phân - số nguyên được chỉ định bắt đầu với số 0 và hệ thập lục phân bắt đầu với 0x.

Đối với hầu hết các nền tảng phổ biến, miền giá trị từ –2,147,483,648 tới +2,147,483,647.

Kiểu Double trong PHP

Chúng giống dạng 3.14159 hoặc 49.1. Theo mặc định kiểu double sẽ in số vị trí thập phân nhỏ nhất. Ví dụ, bạn theo dõi code sau:

<?php
   $bien_double_1 = 2.2888800;
   $bien_double_2 = 2.2111200;
   $ket_qua = $bien_double_1 + $bien_double_2;
   
   print("$bien_double_1 + $bien_double_2 = $ket_qua <br>");
?>

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

Kiểu double trong PHP

Kiểu Boolean trong PHP

Chúng chỉ có hai giá trị là: true hoặc false. PHP cung cấp một cặp hằng số để sử dụng như là các kiểu Boolean: TRUE và FALSE, có thể được sử dụng giống như:

if (TRUE)
   print("Dòng văn bản này luôn luôn được in trên trình duyệt.<br>");

else
   print("Dòng văn bản này sẽ không bao giờ được in trên trình duyệt.<br>");

Thông dịch các kiểu dữ liệu khác thành kiểu Boolean

Đây là quy tắc để xác định tính đúng đắn của bất kì giá trị nào chưa phải là kiểu Boolean.

  • Nếu giá trị là một số, nó là false nếu nó bằng 0 và true nếu khác 0.

  • Nếu giá trị là một chuỗi, nó false nếu chuỗi là rỗng (không tồn tại kí tự nào) hoặc là chuỗi "0", nếu không là true.

  • Giá trị của kiểu NULL luôn luôn là false.

  • Nếu giá trị là một array, nó false nếu nó không chứa các giá trị khác và nếu không là true. Với một object, chứa một giá trị nghĩa là có một biến thành viên đã được gán một giá trị.

  • Resource hợp lệ là true (mặc dù có một vài hàm trả về các resource khi chúng thành công, và trả về FALSE nếu thất bại).

  • Đừng sử dụng double như là Boolean.

Mỗi biến sau đây có giá trị true được nhúng trong tên của nó khi được sử dụng trong một ngữ cảnh Boolean.

$true_num = 3 + 0.14159;
$true_str = "Vi du mot chuoi"
$true_array[49] = "Mot mang cac phan tu";
$false_array = array();
$false_null = NULL;
$false_num = 999 - 999;
$false_str = "";

Kiểu NULL trong PHP

NULL là một kiểu đặc biệt mà chỉ có một giá trị NULL. Để cung cấp cho biến giá trị NULL, đơn giản bạn gán nó như sau:

$my_var = NULL;

Theo qui ước, hằng đặc biệt NULL là viết hoa, nhưng thực sự nó là không phân biệt kiểu chữ, và bạn cũng có thể viết như sau:

$my_var = null;

Một biến mà đã được gán NULL sẽ có các thuộc tính sau:

  • Nó ước lượng là FALSE trong một ngữ cảnh Boolean.
  • Nó trả về FALSE khi được kiểm tra với hàm IsSet() trong PHP.

Kiểu string trong PHP

Chúng là các dãy ký tự, giống như "Hoc PHP co ban va nang cao tai s2sontech.com". Dưới đây là các ví dụ về chuỗi trong PHP.

$string_1 = "Vi du chuoi trong dau nhay kep";
$string_2 = "Hoc PHP co ban va nang cao tai s2sontech.com";
$string_0 = ""; // ví dụ một chuỗi không có ký tự

Bạn xét ví dụ sau để so sánh sự khác nhau khi sử dụng dấu nháy đơn và dấu nháy kép:

<?php
   $bien_1 = "name";
   $bien_2 = '$bien_1 sẽ không được in!';
   print($bien_2);
   print "<br>";
   
   $bien_2 = "$bien_1 sẽ được in!";
   print($bien_2);
?>

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

Biến trong PHP

Giải thích: Ta nhận thấy chuỗi thứ nhất không hề thay đổi. Chuỗi thứ 2 biến $variable đã được thay thế bằng name. Như vậy chuỗi sử dụng nháy đơn là một chuỗi tĩnh, còn chuỗi sử dụng nháy kép là một chuỗi động, thay đổi tùy theo giá trị của biến.

Không có giới hạn về độ dài của chuỗi, có thể dài tùy ý nếu bộ nhớ cho phép.

Các chuỗi được giới hạn bởi các dấu nháy kép được PHP xử lý bằng 2 cách sau đây:

  • Các chuỗi kí tự bắt đầu với (\) được thay thế với một kí tự đặc biệt

  • Các biến (bắt đầu với $) được thay thế bằng biểu diễn chuỗi của giá trị của nó.

Các quy tắc thay thế:

  • \n được thay thế bằng ký tự newline (dòng mới)
  • \r được thay thế bởi ký tự carriage-return, được hiểu là đưa con trỏ về đầu dòng nhưng không xuống dòng.
  • \t được thay thế bởi ký tự tab
  • $ được thay thế bằng một dấu $
  • \" được thay thế bằng một dấu nháy kép "
  • \\ được thay thế bằng một dấu nháy đơn \

Cú pháp Here Document (Heredoc) trong PHP

Bạn có thể gán nhiều dòng cho một biến chuỗi đơn bởi sử dụng cú pháp here document như sau:

<?php

echo <<<END
Ví dụ cú pháp "Here Document"
trong PHP. Đây là một cú pháp
rất hữu ích.

END; ?>

Bắt đầu với <<<END và kết thúc với END;, cú pháp này thực sự rất hữu ích với các chuỗi dài và có thể tránh được nhiều vấn đề về trích dẫn với các dấu nháy ("").

Ví dụ, nếu bạn cần hiển thị dấu nháy trích dẫn kép " thì bạn cần sử dụng dấu gạch chéo \ như sau:

<?php

$x = "Ví dụ minh họa cách trích dẫn \"dấu nháy\" trong PHP!";

print $x;
?>

Với Heredoc, bạn không cần sử dụng dấu gạch chéo \

<?php

$x = <<<EOF
Ví dụ minh họa cách trích dẫn "dấu nháy" trong PHP!
EOF;

print $x;
?>

Cả hai ví dụ đều cho kết quả:

here document trong PHP

Phạm vi biến trong PHP

Phạm vi (scope) có thể được định nghĩa như là phạm vi khả dụng của biến được khai báo trong chương trình. Các biến trong PHP có thể là một trong 4 phạm vi sau:

Bạn nên biết thêm 2 loại dưới đây:

Trong PHP, khi bạn truyền biến vào hàm hoặc gán giá trị của một biến vào một biến khác, có hai cách để truyền giá trị: tham chiếu và tham trị.

Tham trị (Pass by Value): Khi bạn truyền biến bằng cách tham trị, một bản sao của giá trị của biến gốc được tạo ra và chuyển vào hàm hoặc gán cho biến khác. Các thay đổi được thực hiện trên bản sao này không ảnh hưởng đến giá trị của biến gốc.

Ví dụ:

function increment($number) {
    $number++;
    echo "Giá trị trong hàm: $number<br>";
}

$x = 5;
increment($x); // Kết quả: Giá trị trong hàm: 6
echo "Giá trị ngoài hàm: $x"; // Kết quả: Giá trị ngoài hàm: 5​

Trong ví dụ này, giá trị của biến $x không bị thay đổi sau khi hàm increment() được gọi với biến $x.

Tham chiếu (Pass by Reference): Khi bạn truyền biến bằng cách tham chiếu, bạn truyền tham chiếu (địa chỉ trong bộ nhớ) của biến gốc vào hàm hoặc gán cho biến khác. Bất kỳ thay đổi nào được thực hiện trên biến trong hàm cũng sẽ ảnh hưởng đến giá trị của biến gốc.

Ví dụ:

function incrementByReference(&$number) {
    $number++;
    echo "Giá trị trong hàm: $number<br>";
}

$x = 5;
incrementByReference($x); // Kết quả: Giá trị trong hàm: 6
echo "Giá trị ngoài hàm: $x"; // Kết quả: Giá trị ngoài hàm: 6​

Trong ví dụ này, giá trị của biến $x được thay đổi sau khi hàm incrementByReference() được gọi với biến $x do chúng ta sử dụng tham chiếu &.

Khi sử dụng tham chiếu, bạn cần sử dụng dấu & trước tên biến để chỉ định rằng bạn đang truyền tham chiếu của biến.

Khi được thực thi trong class:

Dưới đây là một ví dụ minh họa cách thực hiện tham trị và tham chiếu trong một lớp (class) trong PHP:

Tham trị (Pass by Value) trong class:

class MyClass {
    public $value;

    public function __construct($val) {
        $this->value = $val;
    }

    public function modifyValue($num) {
        $num = $num * 2;
        echo "Giá trị trong hàm: $num<br>";
    }
}

$obj = new MyClass(10);
$obj->modifyValue($obj->value); // Kết quả: Giá trị trong hàm: 20
echo "Giá trị của thuộc tính trong class: " . $obj->value; // Kết quả: Giá trị của thuộc tính trong class: 10​

Trong ví dụ này, giá trị của thuộc tính $value trong đối tượng $obj không bị thay đổi sau khi phương thức modifyValue() được gọi với tham trị của $obj->value. Điều này xảy ra vì biến $num trong phương thức modifyValue() chỉ là một bản sao của giá trị của $obj->value.

Tham chiếu (Pass by Reference) trong class:

class MyClass {
    public $value;

    public function __construct($val) {
        $this->value = $val;
    }

    public function modifyValueByReference(&$num) {
        $num = $num * 2;
        echo "Giá trị trong hàm: $num<br>";
    }
}

$obj = new MyClass(10);
$obj->modifyValueByReference($obj->value); // Kết quả: Giá trị trong hàm: 20
echo "Giá trị của thuộc tính trong class: " . $obj->value; // Kết quả: Giá trị của thuộc tính trong class: 20​

Trong ví dụ này, giá trị của thuộc tính $value trong đối tượng $obj bị thay đổi sau khi phương thức modifyValueByReference() được gọi với tham chiếu của $obj->value. Điều này xảy ra vì chúng ta truyền tham chiếu của biến $obj->value vào phương thức modifyValueByReference(), nên bất kỳ thay đổi nào được thực hiện trên biến trong phương thức cũng sẽ ảnh hưởng đến giá trị của thuộc tính $value.

Đặt tên biến trong PHP

Dưới đây là các qui tắc khi đặt tên một biến trong PHP:

  • Tên biến phải bắt đầu với một chữ cái hoặc ký tự dấu gạch dưới (_).

  • Một tên biến có thể gồm các số, chữ cái, ký tự dấu gạch dưới (_), nhưng bạn không thể sử dụng các ký tự như + , - , % , ( , ) . & , .v.v.

Không có giới hạn kích cỡ cho các biến trong PHP.

Các bài học PHP phổ biến khác tại s2sontech:




Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Learning English Everyday