× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

PHP Type Juggling là gì - Từ A-Z

29/09/2023 01:39

Khi bạn xác định một biến , bạn không cần khai báo kiểu cho biến đó. Trong nội bộ, PHP sẽ xác định loại theo ngữ cảnh mà bạn sử dụng biến.

PHP là một ngôn ngữ lập trình được gõ lỏng lẻo. Điều đó có nghĩa là khi bạn xác định một biến , bạn không cần khai báo kiểu cho biến đó. Trong nội bộ, PHP sẽ xác định loại theo ngữ cảnh mà bạn sử dụng biến.

Ví dụ: nếu bạn gán một chuỗi cho một biến, kiểu của nó sẽ là chuỗi:

<?php

$my_var = 'PHP'; // a stringNgôn ngữ mã:  PHP  ( php )

Và bạn gán một số nguyên cho cùng một biến và kiểu của nó sẽ là số nguyên:

<?php

$my_var = 'PHP'; // a string
$my_var = 100; // an integerNgôn ngữ mã:  PHP  ( php )

PHP có một tính năng gọi là sắp xếp kiểu. Điều đó có nghĩa là trong quá trình so sánh các biến thuộc các loại khác nhau, PHP sẽ chuyển đổi chúng thành loại chung, có thể so sánh được. Ví dụ:

<?php
$qty = 20;
if($qty == '20') {
    echo 'Equal';
}Ngôn ngữ mã:  PHP  ( php )

Đầu ra:

EqualNgôn ngữ mã:  PHP  ( php )

Do sắp xếp kiểu, PHP chuyển đổi chuỗi '20'thành số nguyên (20) và so sánh nó với $qtybiến. Kết quả là true. Do đó, bạn sẽ thấy thông báo Equalở đầu ra.

Việc tung hứng kiểu cũng hoạt động trong các phép tính số học cho các biến thuộc các loại khác nhau. Ví dụ sau minh họa cách tung hứng kiểu hoạt động trong một phép toán số học:

<?php

$total = 100;
$qty = "20";
$total = $total + $qty;

echo $total; // 120Ngôn ngữ mã:  PHP  ( php )

Loại của $totallà một số nguyên, trong khi đó $qtylà một chuỗi. Để tính tổng, trước tiên PHP chuyển đổi giá trị của biến $qty thành số nguyên. Kết quả là một số nguyên.

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

<?php

$total = 100;
$qty = "20 pieces";
$total = $total + $qty;

echo $total; // 120Ngôn ngữ mã:  PHP  ( php )

Trong ví dụ này, PHP chuyển chuỗi “20 phần” thành số nguyên 20 trước khi tính tổng.

Bản tóm tắt

  • PHP là một ngôn ngữ được gõ lỏng lẻo. PHP xác định loại biến dựa trên giá trị.
  • Khi so sánh các giá trị của các loại khác nhau, PHP ngầm chuyển đổi chúng thành cùng một loại có thể so sánh được.