Lý do đằng sau việc in_array trả về True có thể là chuyển đổi chuỗi thành số. Khi một chuỗi được truyền cho hàm, nó sẽ trả về 0, đây là giá trị cần được tìm kiếm.
PHP sử dụng tính năng tung hứng lỏng lẻo, tức là sử dụng ==thay vì ===khi các phần tử được so sánh. Do đó, giá trị của chúng được so sánh chứ không phải loại.
Một lý do khác là kiểu tung hứng, có nghĩa là một kiểu biến được xử lý trong ngữ cảnh của mã.
Ví dụ - khi một giá trị float được gán cho một biến, nó sẽ trở thành một giá trị dấu phẩy động. Nó hoạt động theo cách khi một chuỗi được truyền thành một số nguyên
Để tránh loại hành vi này, có thể truyền tham số thứ ba, tham số này sẽ so sánh dữ liệu ở một chế độ nghiêm ngặt, trong đó các giá trị cũng như kiểu được so sánh.
Dưới đây là cách hàm hoạt động khi một chuỗi được truyền -
Ví dụ
echo intval("Hello");
Đầu ra
Điều này sẽ tạo ra kết quả sau -
0