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

เหตุใด in_array ของ php จึงคืนค่าเป็นจริงหากผ่าน 0


เหตุผลที่ in_array ส่งคืน True อาจเป็นการแปลงสตริงเป็นตัวเลข เมื่อสตริงถูกส่งผ่านไปยังฟังก์ชัน จะส่งกลับ 0 ซึ่งเป็นค่าที่ต้องค้นหา

PHP ใช้การเล่นกลแบบหลวม เช่น ใช้ ==แทน ===เมื่อเปรียบเทียบองค์ประกอบ ดังนั้นค่าของพวกมันจึงถูกเปรียบเทียบไม่ใช่ประเภท

อีกสาเหตุหนึ่งคือ type juggling ซึ่งหมายความว่าประเภทตัวแปรจะได้รับการจัดการในบริบทของโค้ด

ตัวอย่างเช่น เมื่อกำหนดค่าทศนิยมให้กับตัวแปร ค่านั้นจะกลายเป็นค่าทศนิยม มันทำงานในลักษณะเมื่อสตริงถูกแปลงเป็นจำนวนเต็ม

เพื่อหลีกเลี่ยงพฤติกรรมประเภทนี้ สามารถส่งผ่านพารามิเตอร์ที่สามได้ ซึ่งจะเปรียบเทียบข้อมูลในโหมดเข้มงวด โดยจะเปรียบเทียบค่าและประเภทต่างๆ

ด้านล่างนี้คือลักษณะการทำงานของฟังก์ชันเมื่อส่งผ่านสตริง -

ตัวอย่าง

echo intval("Hello");

ผลลัพธ์

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

0