1. Giới thiệu về các kiểu dữ liệu trong PHP

Trong PHP các biến sẽ được lưu giữ một giá trị khác nhau. Câu hỏi là làm sao để có thể phân biệt các giá trị đó. Từ đây ta sẽ có kiểu dữ liệu. Các biến lưu trữ dữ liệu thuộc các kiểu khác nhau và các kiểu dữ liệu khác nhau có thể giúp ta làm những công việc khác nhau. Trong PHP, mình thấy hay ở chỗ là khi khai báo tên biến thì chúng ta chỉ cần khai báo tên biến và giá trị của biến đó còn lại việc nhận dạng kiểu giá trị PHP lo hết!(khác với C, Java,… các bạn có thể xem thêm ở các khóa học của mình nhé).

Trong PHP thì có hỗ trợ chúng ta bảy kiểu dữ liệu nguyên thủy.

  • Integer (INT): kiểu dữ liệu dạng số nguyên
  • Kiểu số thực (Float, double, real)
  • Kiểu boolean
  • Kiểu Chuỗi
  • Kiểu Mảng (array)
  • Kiểu Null
  • Kiểu Object (đối tượng)

2. Kiểu INT trong PHP

Là một kiểu dữ liệu cơ bản, ở dạng số và có thể hoạt động dưới nhiều kiểu cơ số khác nhau(12,-12,113,1,…). Kiểu INT có kích thước tối đa là 32 bit. Vậy nếu chúng ta vượt quá 32bit này thì sao? Câu trả lời là nó sẽ không còn là kiểu INT nữa mà nó sẽ tự động chuyển sang kiểu Float. Hãy lưu ý điều này nhé!

2.1. Khai báo biến kiểu INT

Cũng như khai báo biến mà ta đã học ở bài trước thôi. Nhưng mình có một số quy tắc cho các bạn để khai báo nhé:

  • Một số nguyên thì phải có ít nhất một chữ số.
  • Đã là số nguyên thì không có dấu thập phân nếu không thì nó là kiểu khác nhé.
  • Có thể là số âm hay dương.
  • Số nguyên có thể chỉ định ở trong ký hiệu: nhị phân(cơ số 2), bát phân(cơ số 8), thập phân(cơ số 10), thập lục phân(cơ số 16).

Mình sẽ khai báo một số biến cho các bạn dễ hình dung nhé:

<?php
$a = 1234; // hệ số thập phân
$b = -123; // số âm
$c = 0123; // Bát phân
$d = 0x1A; // Hệ thập lục
$e = 0b11111111; // Hệ nhị phân
?>

2.2. Gán dữ liệu sang kiểu PHP

Thực sự theo mình nghĩ thì việc này không cần thiết nhưng mình vẫn sẽ giới thiệu sơ qua cho các bạn để các bạn có thể biết được nhé, biết còn hơn không mà!

Câu lệnh: (int)$ten_bien;

Tuy nhiên sau khi thực hiện tính toán thì biến sẽ tự chuyển lại kiểu dữ liệu ban đầu. Các bạn chạy thử ví dụ sau để hiểu rõ hơn nhé

<?php
$a = '123';  // Biến $a là kiểu chuỗi có giá trị bằng '123'
$b = 123; // Biến $b là kiểu INT có giá trị bằng 123
$c = $a + $b; // Biến C là kết quả của phép toán $a + $b và sẽ có giá trị là 246 nên nó là kiểu INT
var_dump(is_int($c)); // hàm is_int($tenbien) dùng để kiểm tra một biến có phải là kiểu INT hay không
var_dump(is_int($a)); // kết quả là false vì biến $a là kiểu string
?>

Lưu ý

Khi ký tự đầu tiên không phải dạng số ví dụ: $a = ‘a246’ thì khi ta gán dữ liệu sang INT nó sẽ bằng 0. Bởi vì ký tự đầu tiên không ở dạng số nên nó sẽ tự động cắt bỏ các ký tự sau a và chuỗi này rỗng. Mà rỗng trong INT có giá trị là 0.

2.3. Kiểm tra dữ liệu có phải kiểu INT không?

Việc kiểm tra này rất dễ. Chúng ta chỉ cần sử dụng hàm is_int($tenbien) hoặc is_integer($tenbien). Nếu kết quả trả về là True thì có nghĩa biến đúng là kiểu INT và ngược lại False là không phải kiểu INT.

3. Kiểu số thực

Chắc ai cũng biết số thực là gì. Ở đây ta chỉ cần hiểu đơn giản là kiểu số thực là kiểu sẽ có phần dư. VD: 1.23 4.33 5.08… Kích cỡ của kiểu này còn tùy thuộc vào platform nhưng giá trị lớn nhất xấp xỉ 1.8e308. Các kiểu dữ liệu số thực trong PHP gồm: Float và Double. Cách khai báo cũng tương tự như kiểu INT.

<?php 
    $float = 9.87;
?>

Việc gán dữ liệu sang kiểu số thực ta chỉ cần sử dụng Float hay Double.

<?php 
    $a = 112233;
    $a = (float)$a; //biến a lúc này là kiểu float
    $a = (double)$a; // biến a lúc này là kiểu double
?>

Tương tự INT, để kiểm tra một biến có phải là kiểu số thực hay không ta cần dùng hàm is_float($tenbien) để kiểm tra kiểu float và is_double($tenbien) để kiểm tra kiểu double. Nếu đúng sẽ trả về True, nếu sai sẽ trả về False.

4. Kiểu Boolean

Kiểu boolean là kiểu mà nó sẽ đại diện cho 2 trạng thái đúng(true) và sai(false). Ta có thể viết hoa hay thường đều được. Kiểu này thì thường được sử dụng để thử nghiệm điều kiện.

$x = true;
$y = false;

Gán dữ liệu sang kiểu Boolean có 2 cách là (boolean)$tenbien hoặc (bol)$tenbien

<?php 
$a = 13579;
$b = (boolean)$a;
?>

Để kiểm tra dữ liệu có phải kiểu Boolean không ta sử dụng is_boolean($tenbien), nếu đúng sẽ trả về True, sai sẽ trả về False.

5. Kiểu chuỗi trong PHP

Trong PHP thì kiểu chuỗi gồm có kiểu String(chuỗi) và Char(ký tự). Mỗi ký tự sẽ là 1 byte và là một trong 256 ký tự khác nhau.

Để có thể khai báo được kiểu chuỗi thì ta chỉ cần khai báo một biến và gán giá trị chuỗi cho nó và chuỗi phải được bao quanh bởi dấu nháy đơn ‘’ hoặc dấu nháy kép “”.

Muốn gán giá trị sang kiểu chuỗi thì ta dùng (string)

Ta có hàm is_string($tenbien) để kiểm tra xem phần tử có phải chuỗi hay không. Nếu đúng sẽ trả về True và sai sẽ trả về False.

<?php
$a = 'laptrinhtudau' // khai báo chuỗi
$b = 123; // khai báo biến $a kiểu int có giá trị 123
$b = (string)$b; //Chuyển biến $a thành kiểu chuỗi và có giá trị là '123'
is_string($b);
?>

6. Kiểu mảng (Array)

Kiểu mảng trong PHP là một danh sách mà trong đó ta sẽ có các phần tử cùng hoặc khác kiểu dữ liệu. Và mảng được chia ra làm 2 loại là Mảng một chiềuMảng đa chiều. Các phần tử trong mảng sẽ được truy xuất thông qua chính vị trí của nó nằm trong mảng. Mảng có kiến thức rộng nên tôi sẽ nói nó cụ thể ở một bài. Còn bây giờ ta sẽ chỉ tìm hiểu qua về cách tạo mảng và cấu trúc của nó nhé!

6.1. Cấu trúc của mảng

Trong mảng của chúng ta sẽ có rất nhiều phần tử. Nhưng mỗi phần tử sẽ đề có cấu trúc Key và Value

  • Key: là khóa của mảng dùng để phân biệt các phần tử trong mảng.
  • Value: là giá trị của các phần tử tương ứng với các key ở trong mảng của chúng ta.
  • Đây là cặp thông tin đặc trưng của mỗi phần tử trong mảng.

6.2. Cách tạo mảng

Để tạo được mảng ta sẽ dùng hàm array()

<?php 
    $array = array('giá trị 1 mảng','giá trị 2 mảng');
?>

Để biết được độ lớn của mảng ta sẽ dùng hàm count()

<?php
$numberArray = array('one', 'two', 'three');
echo count($numberArray);// Kết quả: 3
?>

PHP cũng cung cấp cho ta hàm print_r() để in ra tất cả các phần tử và vị trí của nó ở trong mảng.

<?php
$ten = array('Thành', 'Nam', 'Sơn');
print_r($ten);
?>

Để thêm được phần tử vào mảng ta có câu lệnh: $TenMang[‘key’] = ‘value’;

Để sửa phần tử trong mảng thì ta hiểu một cách đơn giản chính là việc sửa một biến(vì bản chất của mảng là biến). Và nếu muốn chỉnh sửa được mảng thì ta cần phải truy cập vào biến mảng đó. Ta sẽ có câu lệnh sau: $mang[‘index’] = ‘giá trị mới’;

Khởi gán giá trị cho mảng ta sẽ làm việc thông qua key của nó bằng 2 cách

  • Khởi tạo ngay khi ta tạo mảng:
<?php
 $age = array("Thành"=>"18", "Nam"=>"68", "Son"=>"88");
?>
  • Khởi tạo riêng rẽ cho từng phần tử của mảng:
<?php
$age['Thành'] = "18";
$age['Nam'] = "68";
$age['Sơn'] = "88";
?>

6.3. Mảng một chiều

Nhưng ví dụ trên của mình tất cả đều là mảng một chiều. Ta có thể hiểu nôm na là một phần tử của mảng có một giá trị thì chính là mảng một chiều. Mình sẽ tóm gọn lại bằng bảng sau:

Chỉ số 0 1 2 3 4 5
Mảng a 12 15 34 44 17 33

6.4. Mảng đa chiều

Mảng đa chiều thực ra chính là mảng một chiều mà phần tử của nó là các mảng một chiều hay nhiều chiều khác. Hay nó một cách dễ hiểu hơn nghĩa là một phần tử của mảng có giá trị được biểu diễn dưới dạng mảng thì gọi là Mảng đa chiều. Mảng đa chiều thường được sử dụng để lưu trữ dữ liệu có cấu trúc nhiều tầng. Các thao tác trên mảng thì đều tương tự như mảng một chiều

7. Kiểu Null

Đây là một kiểu dữ liệu đặc biệt có giá trị duy nhất là null. Đây chính là kiểu dữ liệu rỗng. Một biến khi ta khai báo mà không có bất kỳ giá trị nào thì mặc định sẽ được gán vào giá trị Null. Khi khai báo tên biến kiểu này bộ nhớ sẽ tiếp nhận tên biến mà không mất thêm bất kỳ một ô nhớ nào nên việc sử dụng khá tiện lợi. Ta cũng có thể làm trống các biến bằng cách đặt giá trị là Null.

<?php
$a = null;
$b = "";
$b = null;
var_dump($b);
?>

Kiểu Null khi gán sang kiểu INT sẽ bằng 0, sang kiểu chuỗi thì bằng rỗng và sang kiểu Boolean thì mang giá trị False.

Để kiểm tra một biến có giá trị Null hay không ta dùng hàm is_null($tenbien).

8. Kiểu Object (đối tượng)

Đây là kiểu mà chúng ta chỉ kể ra cho biết thôi, còn về mọi tính năng của nó thì chúng ta sẽ học ở phần PHP hướng đối tượng nhé!