PHP – Data Types

Thuật ngữ "kiểu dữ liệu" đề cập đến việc phân loại dữ liệu thành các danh mục khác nhau. PHP có tổng cộng tám kiểu dữ liệu mà chúng ta sử dụng để xây dựng các biến của mình −

  • Integers − Số nguyên, không có dấu thập phân, như 4195.

  • Doubles − Các số thực như 3.14159 hoặc 49.1.

  • Booleans − Chỉ có hai giá trị có thể, hoặc là đúng (true) hoặc sai (false).

  • NULL − Kiểu đặc biệt chỉ có một giá trị: NULL.

  • Strings − Các chuỗi ký tự, như 'PHP hỗ trợ các thao tác chuỗi.'

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

  • Objects − Các thể hiện của các lớp do lập trình viên định nghĩa, có thể đóng gói cả các loại giá trị khác và các hàm cụ thể cho lớp đó.

  • Resources − Các biến đặc biệt giữ tham chiếu đến các tài nguyên bên ngoài PHP (chẳng hạn như kết nối cơ sở dữ liệu).

Năm loại đầu tiên là các kiểu đơn giản, và hai loại tiếp theo (mảng và đối tượng) là các kiểu phức hợp. Các kiểu phức hợp có thể đóng gói các giá trị tùy ý của kiểu tùy ý, trong khi các kiểu đơn giản thì không thể.

Trong chương này, hãy cùng thảo luận chi tiết về các kiểu dữ liệu tích hợp sẵn của PHP.

Integer Data Type in PHP

Một số nguyên không có dấu phẩy thập phân (như 4195) thuộc loại int trong PHP. Các kiểu dữ liệu số nguyên là kiểu đơn giản nhất. Chúng tương ứng với các số nguyên đơn giản, cả số dương và số âm.

  • Một int là một số thuộc tập hợp Z = {..., -2, -1, 0, 1, 2, ...}.

  • Một int có thể được biểu diễn dưới dạng thập phân (cơ số 10), thập lục phân (cơ số 16), bát phân (cơ số 8) hoặc nhị phân (cơ số 2).

Để sử dụng ký hiệu số bát phân, một số phải được đặt trước bằng "0o" hoặc "0O". Để sử dụng ký hiệu số thập lục phân, hãy đặt số đó trước bằng "0x". Để sử dụng ký hiệu số nhị phân, hãy đặt số đó trước bằng "0b".

Dưới đây là một số examples

  • Decimal Integer − 201, 4195, -15

  • Octal Integer − 0010, 0O12, -0O21

  • Hexadecimal Integer − 0x10, -0x100

  • Binary Integer − 0b10101, -0b100

Các số nguyên có thể được gán cho các biến, hoặc chúng có thể được sử dụng trong các biểu thức, như sau −

$int_var = 12345;
$another_int = -12345 + 12345;

Double Data Type in PHP

Các biến kiểu Double đại diện cho các số thực (còn được gọi là "floats", "doubles" hoặc "số thực") là những số có thành phần phân số. Thành phần phân số theo sau thành phần nguyên và được ngăn cách bởi ký hiệu thập phân (.).

Note − Một biến kiểu double có thể là dương, âm hoặc bằng không.

$var1 = 1.55
$var2 =-123.0

Scientific Float Notation

PHP cũng cho phép sử dụng ký hiệu khoa học để biểu diễn một số thực với nhiều chữ số hơn sau dấu phẩy. Ký hiệu "E" hoặc "e" được sử dụng để tách phần nguyên và phần thập phân.

− 1.2e3, 2.33e-4, 7E-10, 1.0E5 

Theo mặc định, số kiểu double được in ra với số chữ số thập phân tối thiểu cần thiết. Hãy xem xét đoạn sau example

<?php
   $many = 2.2888800;
   $many_2 = 2.2111200;
   $few = $many + $many_2;

   print("$many + $many_2 = $few");
?>

Nó tạo ra output

2.28888 + 2.21112 = 4.5

Boolean Data Type in PHP

Kiểu bool chỉ có hai giá trị; nó có thể là Đúng (True) hoặc Sai (False). Kiểu bool được sử dụng để biểu thị một giá trị chân lý.

$bool1 = true;
$bool2 = false;

Bạn cũng có thể sử dụng các giá trị nguyên "1" và "0" để đại diện cho các giá trị Boolean True và False.

$bool3 = 1; 
$bool4 = 0;

Thường thì, kết quả của một toán tử trả về giá trị bool sẽ được truyền vào một cấu trúc điều khiển như if, while hoặc do-while . Ví dụ,

if (TRUE)
   print("This will always print.");

else
   print("This will never print.");

Interpreting Other Data Types as Booleans

Dưới đây là một tập hợp các quy tắc mà bạn có thể sử dụng để diễn giải các kiểu dữ liệu khác thành kiểu Boolean −

  • Nếu giá trị là một số, thì nó chỉ là False khi giá trị bằng không, nếu không thì giá trị là True.

  • Nếu giá trị là một chuỗi, nó sẽ là False nếu chuỗi đó rỗng (có zero ký tự) hoặc là chuỗi "0", và sẽ là True trong các trường hợp khác.

  • Các giá trị kiểu NULL luôn luôn là False.

  • Nếu giá trị là một mảng, nó sẽ là False nếu không chứa giá trị nào khác; True trong trường hợp ngược lại. Đối với một đối tượng, việc chứa một giá trị có nghĩa là có một biến thành viên đã được gán một giá trị.

  • Các tài nguyên hợp lệ là true (mặc dù một số hàm trả về tài nguyên khi thành công sẽ trả về FALSE khi không thành công).

Note − Không sử dụng double như Boolean.

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

$true_num = 3 + 0.14159;
$true_str = "Tried and true"
$true_array[49] = "An array element";
$false_array = array();
$false_null = NULL;
$false_num = 999 - 999;
$false_str = "";

String Data Type in PHP

Một chuỗi là một dãy các ký tự, ví dụ, 'PHP hỗ trợ các thao tác với chuỗi.'

Trong PHP, một ký tự tương đương với một byte. Điều này có nghĩa là PHP chỉ hỗ trợ một bộ ký tự 256, và do đó không cung cấp hỗ trợ Unicode gốc.

PHP hỗ trợ cả chuỗi được đặt trong dấu nháy đơn và dấu nháy kép. Cả hai cách biểu diễn sau đây đều hợp lệ trong PHP −

$string_1 = "This is a string in double quotes";
$string_2 = 'This is a somewhat longer, singly quoted string';

Dưới đây là một số ví dụ khác về kiểu chuỗi −

$string_39 = "This string has thirty-nine characters";
$string_0 = "";		// a string with zero characters

Chuỗi được đặt trong dấu nháy đơn được xử lý gần như một cách nguyên văn, trong khi chuỗi được đặt trong dấu nháy kép thay thế các biến bằng giá trị của chúng cũng như diễn giải đặc biệt một số chuỗi ký tự.

<?php
   $variable = "name";
   $literally = 'My $variable will not print!';

   print($literally);
   print "\n";

   $literally = "My $variable will print!";
   print($literally);
?>

Khi bạn chạy đoạn mã này, nó sẽ tạo ra output

My $variable will not print!
My name will print

Không có giới hạn nhân tạo nào về độ dài chuỗi. Trong giới hạn của bộ nhớ có sẵn, bạn có thể tạo ra các chuỗi dài tùy ý.

Các chuỗi được phân cách bằng dấu ngoặc kép (như trong "this") được PHP xử lý trước theo hai cách sau:

  • Một số chuỗi ký tự bắt đầu bằng dấu gạch chéo ngược (\) được thay thế bằng các ký tự đặc biệt.

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

Các thay thế chuỗi thoát là −

  • \n được thay thế bằng ký tự xuống dòng.

  • \r được thay thế bằng ký tự quay về đầu dòng.

  • \t được thay thế bằng ký tự tab.

  • \$ được thay thế bằng ký hiệu đô la chính nó ($)

  • \" được thay thế bằng một dấu ngoặc kép đôi (")

  • \\ được thay thế bằng một dấu gạch chéo ngược đơn (\)

PHP cũng có Heredoc Nowdoc đại diện cho kiểu dữ liệu chuỗi.

Heredoc Representation of String Data Type

Bạn có thể gán nhiều dòng cho một biến chuỗi duy nhất bằng cách sử dụng heredoc −

<?php
   $channel =<<<_XML_

   <channel>
      <title>What's For Dinner</title>
      <link>http://menu.example.com/ </link>
      <description>Choose what to eat tonight.</description>
   </channel>
   _XML_;

   echo <<< END
      This uses the "here document" syntax to output multiple lines with 
	  variable interpolation. Note that the here document terminator must
	  appear on a line with just a semicolon. no extra whitespace!
   END;

   print $channel;
?>

Khi bạn chạy đoạn mã này, nó sẽ tạo ra đầu ra sau −

This uses the "here document" syntax to output
multiple lines with variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!

<channel>
   <title>What's For Dinner</title>
   <link>http://menu.example.com/ </link>
   <description>Choose what to eat tonight.</description>
</channel>

Nowdoc Representation of String Data Type

Tất cả các quy tắc cho định danh heredoc cũng áp dụng cho định danh nowdoc. Một nowdoc được chỉ định giống như một heredoc , nhưng không có phân tích cú pháp bên trong nowdoc. Bạn có thể sử dụng cấu trúc nowdoc để nhúng các khối văn bản lớn mà không cần phải sử dụng bất kỳ ký tự thoát nào.

Một nowdoc được xác định bằng cùng một chuỗi <<< được sử dụng cho heredocs, nhưng định danh được đặt trong dấu nháy đơn, ví dụ: <<<'EOT'. Nowdocs áp dụng cho chuỗi được đặt trong dấu nháy đơn giống như cách mà heredocs áp dụng cho chuỗi được đặt trong dấu nháy kép.

Hãy xem xét ví dụ sau −

<?php
   echo <<<'IDENTIFIER'
   As the cat cleared its throat with a refined "Meow",
   the squirrel chirped excitedly about its latest
   discovery of a hidden stash of peanut treasure!
   IDENTIFIER;
?>

Chạy mã và kiểm tra đầu ra của nó −

As the cat cleared its throat with a refined "Meow",
the squirrel chirped excitedly about its latest
discovery of a hidden stash of peanut treasure!

Null Data Type in PHP

Trong PHP, null đại diện cho một kiểu đặc biệt chỉ có một giá trị: NULL. Các biến chưa được định nghĩa và biến đã được unset() sẽ có giá trị là "null".

Các lập trình viên thường sử dụng kiểu dữ liệu Null trong PHP để khởi tạo biến hoặc để chỉ ra rằng một giá trị đang thiếu.

Để gán giá trị NULL cho một biến, bạn chỉ cần gán nó như sau −

$my_var = NULL;

Hằng số đặc biệt NULL được viết hoa theo quy ước, nhưng thực ra nó là case insensitive; bạn cũng có thể đã gõ −.

$my_var = null;

Một biến đã được gán giá trị NULL có các thuộc tính sau −

  • Nó đánh giá là FALSE trong bối cảnh Boolean.

  • Nó trả về FALSE khi được kiểm tra với hàm IsSet().

Note − Kiểu dữ liệu của các biến trong PHP được xác định tại thời điểm chạy dựa trên các giá trị được gán cho chúng.

Array Data Type in PHP

Một mảng trong PHP là một bản đồ có thứ tự, trong đó một khóa được liên kết với một hoặc nhiều giá trị. Một mảng PHP được định nghĩa bằng cách sử dụng hàm array(), hoặc bằng cách sử dụng cú pháp ngắn, trong đó dữ liệu được đặt trong dấu ngoặc vuông.

Hãy xem xét các ví dụ sau về associative arrays

Using the array() Function

$arr = array(
   "foo" => "bar",
   "bar" => "foo",
);

Using the Short Notation

$arr = [
   "foo" => "bar",
   "bar" => "foo",
];

Một mảng trong PHP cũng có thể được định nghĩa bằng cú pháp "cặp khóa-giá trị". Nó được gọi là một indexed array .

$arr = array("foo", "bar", "hello", "world");

Trong một multi-dimensional array , mỗi phần tử trong mảng chính cũng có thể là một mảng. Và, mỗi phần tử trong mảng con có thể là một mảng, và cứ như vậy. Các giá trị trong mảng nhiều chiều được truy cập bằng cách sử dụng nhiều chỉ số.

Note − Trong PHP, các kiểu dữ liệu phức hợp được sử dụng để lưu trữ các tập hợp dữ liệu, bao gồm mảng và đối tượng.

Object Data Type in PHP

Một kiểu đối tượng là một thể hiện của một lớp được định nghĩa bởi lập trình viên, có thể đóng gói cả các loại giá trị khác và các hàm cụ thể cho lớp đó.

Để tạo một đối tượng mới, hãy sử dụng new statement để khởi tạo một lớp.

class foo {
   function bar() {
      echo "Hello World."; 
   }
}
$obj = new foo;
$obj->bar();

Resource Data Type in PHP

Tài nguyên là các biến đặc biệt giữ tham chiếu đến các tài nguyên bên ngoài PHP (chẳng hạn như luồng tệp hoặc kết nối cơ sở dữ liệu).

Dưới đây là một ví dụ về file resource

$fp = fopen("foo.txt", "w");

Dữ liệu thuộc bất kỳ loại nào ở trên được lưu trữ trong một biến. Tuy nhiên, vì PHP là một ngôn ngữ kiểu động, nên không cần phải chỉ định kiểu của một biến, vì điều này sẽ được xác định tại thời điểm chạy.

Example: The gettype() Function

Hàm gettype() rất hữu ích để tìm ra loại dữ liệu được lưu trữ trong một biến.

<?php
   $x = 10;
   echo gettype($x) . "\n";

   $y = 10.55;
   echo gettype($y) . "\n";

   $z = [1,2,3,4,5];
   echo gettype($z);
?>

Khi bạn chạy đoạn mã này, nó sẽ tạo ra output

integer
double
array