Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

ทำไม in_array ของ PHP คืน true ถ้าส่ง 0 เข้าไป


เหตุผลที่ 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