ฉันมีรหัสต่อไปนี้:
$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
$item['price'] = -1;
}
มีวัตถุประสงค์เพื่อเริ่มต้นราคาสินค้าเป็น 0 จากนั้นรับข้อมูลเกี่ยวกับราคานั้น หากราคาถูกแจ้งเป็น 'e' หมายถึงการแลกเปลี่ยนแทนการขายซึ่งถูกเก็บไว้ในฐานข้อมูลเป็นจำนวนลบ
นอกจากนี้ยังมีความเป็นไปได้ที่จะปล่อยให้ราคาเป็น 0 เนื่องจากไอเท็มนั้นเป็นโบนัสหรือเนื่องจากราคาจะถูกกำหนดในอีกสักครู่
แต่เมื่อใดก็ตามที่ไม่ได้กำหนดราคาซึ่งปล่อยให้ราคาเริ่มต้นเป็น 0 if
ลูปที่ระบุด้านบนจะประเมินว่าเป็นจริงและราคาจะถูกกำหนดเป็น -1 นั่นคือมันถือว่า 0 เท่ากับ 'e'
สิ่งนี้สามารถอธิบายได้อย่างไร?
เมื่อระบุราคาเป็น 0 (หลังการเริ่มต้น) พฤติกรรมจะไม่แน่นอน: บางครั้งถ้าประเมินว่าเป็นจริงบางครั้งก็ประเมินว่าเป็นเท็จ *
if((string)$item['price'] == 'e')
แก้ไขพฤติกรรมแปลก ๆ ดูstackoverflow.com/a/48912540/1579327สำหรับรายละเอียดเพิ่มเติม