Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Tại sao in_array PHP trả về true khi truyền 0?


Lý do in_array trả về True có thể do chuyển đổi string-to-number. Khi chuỗi truyền cho hàm, nó trả về 0, là giá trị cần tìm.

PHP dùng loose juggling, tức dùng == thay vì === khi so sánh phần tử. Do đó so sánh giá trị chứ không phải kiểu.

Lý do khác là type juggling: kiểu biến xử lý theo ngữ cảnh code.

Ví dụ: gán float cho biến, nó thành float. Hành xử như khi ép string thành integer.

Để tránh hành vi này, truyền tham số thứ ba, so sánh strict mode, so sánh cả giá trị lẫn kiểu.

Hành vi hàm khi truyền chuỗi:

Ví dụ

echo intval("Hello");

Kết quả

0