Như chúng ta đã biết, tất cả các biến PHP đều có kiểu dữ liệu riêng. Kiểu dữ liệu của biến sẽ được tự động xác định bởi giá trị đặt vào biến $a=1 // $a là kiểu integer $a=1.2 // Bây giờ, nó là kiểu double $a="1" // Và bây giờ nó là kiểu stringa) Chuyển kiểu chuỗi và lừa kiểu dữ liệu Nếu bạn làm các thao tác tính toán số trên một chuỗi, PHP sẽ tính toán chuỗi như là một số. Điều này được biết đến với cái tên gọi là "chuyển kiểu chuối (String conversion), mặc dù giá trị chuỗi của nó có thể không cần phải thay đổi. Trong đoạn ví dụ sau, biến $str được xác định là một chuỗi: $str="756300 không có"; Nếu chúng ta cố cộng thêm một giá trị nguyên là 3 vào biến $str, biến $str sẽ tự động tính với số nguyên 756300: $x=4+$str;//$x =756304 Nhưng bản thân giá trị của biến $str không thay đổi echo ($str); // In ra màn hình chuỗi "756300 không có" Chuyển kiểu chuỗi phải tuân theo 2 nguyên tắc sau: - Chỉ những chuỗi bắt đầ là một xâu các chữ số. Nếu chuỗi bắt đầu bằng một giá trị số hợp lệ, chuỗi này sẽ được xác định như giá trị của nó, trong trường hợp khác, nó sẽ trả về 0. VD: chuỗi"35 tuổi" sẽ được ước lượng là 35, nhưng chuỗi "tuổi 35" sẽ chỉ xác định giá trị 0. - Một chuỗi sẽ chỉ được xác định như là một giá trị kiểu double nếu giá trị kiểu double được miêu tả bao gồm toàn bộ chuỗi. Chuỗi "3.4", "-4.2" sẽ được ước lượng như giá trị thực 3.4 và -4.2.Nếu một ký tự không phải là ký tự kiểu số thực được đưa vào chuỗi, giá trị của chuỗi đó sẽ được ước lượng như là một số nguyên. Chuỗi "3.4 dollar" sẽ thành số nguyên 3. Trong việc cộng với chuỗi chuyển kiểu, PHP sẽ thực hiện "lừa kiểu" giữa 2 kiểu số. Nếu bạn thực hiện một phép toán số học giữa kiểu thực và kiểu nguyên, giá trị sẽ là số thực
$a=1 //$ a là một số nguyên
$b= 1.0 //$b là số thực
$c=$a+$b //$c là kiểu số thực ,
= 2.0$d = $c+"6th" //$d là kiểu số thực= 8.0
Ép kiểu dữ liệu
Ép kiểu dữ liệu cho phép bạn thay đổi kiểu dữ liệu của biến
$a=11.2// $a là kiểu thực
$a=(int)$a// Bây giờ, $ a là kiểu nguyên, giá trị = 11$a= (double)$a// Bây giờ $a lại trở về kiểu thực
= 11.0$b= (string)$a// $b là giá trị kiểu chuỗi ="11"Ngoài ra, chúng ta còn được phép ép kiểu (array) và (object)(integer) tương đương với (int); (fload) và (real) tương đương với (double) Một số hàm tiện ích khác
PHP có một số hàm hỗ trợ làm việc với các biến- Hàm gettype($ten_bien) xác định kiểu của biến. Nó sẽ trả về một trong các giá trị:
"integer","double", "string", "array","object", "class", "unknown type"
(Chúng ta sẽ tìm hiểu kỹ hơn vể mảng (array) và kiểu đối tượng (object) ở các bài sau.
Ví dụ:
echo(gettype($name));
- Hàm settype($ten_bien,"kieu_du_lieu") sẽ đặt kiểu dữ liệu cho biến $ten_bien.
Kiểu dữ liệu được viết dưới dạng một chuỗi, và có thể có một trong các kiểu sau:
"integer", "double", "string","array", "object".
Nếu kiểu dữ liệu không được đặt, giá trị false sẽ được trả về, còn nếu thành công, nó sẽ trả về giá trị true.
VD:
$a=7.5; //$a là kiểu thựcsettype($a,"integer");
// bây giờ nó là một số nguyên có giá trị 7- Hàm isset($ten_bien) được sử dụng để xác định xem biến $ten_bien đã đặt một giá trị nào đó hay chưa. Nếu biến đó đã có giá trị,hàm trả về true.Trong truờng hợp ngược lại, hàm trả về giá trị false;
- Hàm unset($ten_bien) được sử dụng để huỷ bỏ biến $ten_bien, giải phóng bộ nhớ chiếm dụng của biến đó.