ความแตกต่างระหว่าง NULL และ null ใน PHP


85

มีความแตกต่างระหว่างNULLและnullใน PHP หรือไม่? บางครั้งพวกเขาดูเหมือนจะใช้แทนกันได้และบางครั้งก็ไม่ใช่

แก้ไข: ด้วยเหตุผลบางประการเมื่อฉันอ่านเอกสารที่เชื่อมโยงกับในคำตอบ (ก่อนโพสต์คำถามนี้) ฉันอ่านว่า "case sensitive" แทนที่จะเป็น "case insensitive" ซึ่งเป็นเหตุผลทั้งหมดที่ฉันโพสต์คำถามนี้ในตอนแรก .. .


2
NULL=nullและในทางกลับกันเว้นแต่จะมีการสอบถามการจับคู่แบบตรงทั้งหมดใน DB
Funk Forty Niner

@FunkFortyNiner ไม่มี DB ที่เกี่ยวข้องกับคำถามนี้ คำถามเกี่ยวกับภาษาโปรแกรม
Pablo Pazos

@PabloPazos ทำไมคุณถึงทักฉันหลังจาก 6 ปีผ่านไป? นอกจากนี้หากคุณอ่านความคิดเห็นของฉันอีกครั้งคุณจะเห็นความเกี่ยวข้องที่น่าจะเป็นไปได้ ดูที่คีย์เวิร์ด "ยกเว้น" ซึ่งจะเป็นความจริงที่เป็นไปได้
Funk Forty Niner

1
@PabloPazos มันค่อนข้างไร้สาระที่จะแสดงความคิดเห็นเหมือนคุณสิ่งที่เขาพูดมีความเกี่ยวข้องและเป็นประโยชน์อย่างสมบูรณ์ หากมีคนอื่นเข้ามาและดูสิ่งนี้ในขณะที่มีข้อผิดพลาด DB จะช่วยให้สามารถติดตามวิธีแก้ปัญหาได้อย่างรวดเร็วผู้ที่ไม่เกี่ยวข้องด้วยก็จะเดินหน้าต่อไปและดูคำตอบอื่น
Kenziiee Flavius

1
@FunkFortyNiner ขอบคุณสำหรับความคิดเห็นนั่นคือสิ่งที่ฉันต้องการฟัง ฉันพยายามกรองค่าฐานข้อมูล NULL ออกโดยใช้ isset () ซึ่งมักจะส่งคืนค่าเท็จสำหรับ null ปกติ แต่ด้วยค่าฐานข้อมูลฉันต้องใช้ $ value === NULL ฉันไม่ค่อยเข้าใจว่ามันเป็นไปได้อย่างไร แต่ฉันมาถึงหน้านี้พร้อมกับปัญหานี้
Jeff

คำตอบ:


124

Null ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่

จากเอกสารประกอบ :

มีค่าประเภท null เพียงค่าเดียวและนั่นคือคีย์เวิร์ดที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ NULL


6
เว้นแต่จะมีการสอบถามการจับคู่แบบตรงทั้งหมดใน DB
Funk Forty Niner

ฉันมีปัญหาในการเปรียบเทียบnullมูลค่าที่ได้รับจากการสืบค้นฐานข้อมูล คุณสามารถช่วย?
Razin Abid

9

ไม่มีความแตกต่างกัน ประเภทเดียวกันเป็นเพียงคำหลักที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ เหมือนกับTrue/ Falseetc ...


-2

มีความแตกต่างทางเทคนิคไม่ใช่สิ่งที่คุณคิด (คิดว่ามันปรากฏที่ไหนในพจนานุกรม): ค่า ASCII สำหรับค่าว่างตัวพิมพ์เล็กจะปรากฏหลังตัวพิมพ์ใหญ่ ลอง:

$a = NULL;
$b = null;
if($a < $b){
   print 'first num appears earlier in the dictionary than second num';
}
else {
   print'the right num appears in the dictionary before the left num ';
}

** จริงๆแล้วไม่มีค่า ASCII สำหรับค่าว่างตัวพิมพ์เล็กในขณะที่ตัวพิมพ์ใหญ่ NULL เป็น 0 ค่าว่างตัวพิมพ์เล็กจะถูกประเมินเป็นค่าสตริงซึ่งจะมากกว่า 0 ความแตกต่างระหว่างค่า ASCII ตัวพิมพ์ใหญ่และตัวพิมพ์เล็กทั้งหมดคือ 32 ยกเว้นที่นี่ โดยจะพิจารณาค่าสตริงทั้งหมด


เอ่อสิ่งนี้มีความสัมพันธ์กับการใช้งานเป็นค่าสถานะบูลีเนสก์อย่างไร ASCII ไม่เคยถูกสอบถาม?
Martin

1
นี่เป็นสิ่งที่ไม่ถูกต้อง คุณควรจะพูดว่าelseif($b < $a) {... } else print 'the same';แล้วคุณจะเห็นว่าในความเป็นจริงพวกเขาเหมือนกัน เช่นเดียวกับ nUlL และ NuLl
Matt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.