เหตุผลที่ in_array คืน True อาจเป็นการแปลง string-to-number เมื่อส่งสตริงให้ฟังก์ชัน มันคืน 0 ซึ่งเป็นค่าที่ต้องค้นหา
PHP ใช้ loose juggling คือ ใช้ == แทน === เมื่อเปรียบเทียบองค์ประกอบ ดังนั้นเปรียบเทียบค่า ไม่ใช่ type
อีกเหตุผลคือ type juggling หมายถึงชนิดตัวแปรถูกจัดการในบริบทของโค้ด
เช่น - เมื่อกำหนดค่า float ให้ตัวแปร มันกลายเป็น floating-point value มันทำงานแบบที่สตริงถูก cast เป็น integer
เพื่อหลีกเลี่ยงพฤติกรรมนี้ สามารถส่งพารามิเตอร์ที่สาม ซึ่งเปรียบเทียบใน strict mode ที่เปรียบเทียบทั้งค่าและ type
ด้านล่างคือพฤติกรรมฟังก์ชันเมื่อส่งสตริง:
ตัวอย่าง
echo intval("Hello");ผลลัพธ์
จะได้ผลลัพธ์ดังนี้:
0