เหตุผลที่ in_array ส่งคืน True อาจเป็นการแปลงสตริงเป็นตัวเลข เมื่อสตริงถูกส่งผ่านไปยังฟังก์ชัน จะส่งกลับ 0 ซึ่งเป็นค่าที่ต้องค้นหา
PHP ใช้การเล่นกลแบบหลวม เช่น ใช้ ==แทน ===เมื่อเปรียบเทียบองค์ประกอบ ดังนั้นค่าของพวกมันจึงถูกเปรียบเทียบไม่ใช่ประเภท
อีกสาเหตุหนึ่งคือ type juggling ซึ่งหมายความว่าประเภทตัวแปรจะได้รับการจัดการในบริบทของโค้ด
ตัวอย่างเช่น เมื่อกำหนดค่าทศนิยมให้กับตัวแปร ค่านั้นจะกลายเป็นค่าทศนิยม มันทำงานในลักษณะเมื่อสตริงถูกแปลงเป็นจำนวนเต็ม
เพื่อหลีกเลี่ยงพฤติกรรมประเภทนี้ สามารถส่งผ่านพารามิเตอร์ที่สามได้ ซึ่งจะเปรียบเทียบข้อมูลในโหมดเข้มงวด โดยจะเปรียบเทียบค่าและประเภทต่างๆ
ด้านล่างนี้คือลักษณะการทำงานของฟังก์ชันเมื่อส่งผ่านสตริง -
ตัวอย่าง
echo intval("Hello");
ผลลัพธ์
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
0