เมื่อเราเปรียบเทียบตัวเลขใน PHP 8 จะใช้การเปรียบเทียบตัวเลข มิฉะนั้นจะแปลงตัวเลขเป็นสตริงและใช้การเปรียบเทียบสตริง
สตริงสามารถจัดประเภทได้ 3 แบบ -
สตริงที่มีเฉพาะตัวเลข ตัวอย่าง - 1234 หรือ 1.24e1
Leading-numeric string - สตริงนำหน้าเริ่มต้นด้วยสตริงตัวเลข แต่ควรตามด้วยตัวอักษรที่ไม่ใช่ตัวเลขรวมถึง whitespace ตัวอย่าง - 12xyz หรือ "123"
Non-numeric string - สตริงที่ไม่สามารถเป็นตัวเลขได้และไม่ใช่ leading-numeric string
ตัวอย่าง - PHP 7
0=='foo' // PHP 7 จะคืนค่า true
ตัวอย่าง - PHP 8
0 =='foo' // PHP 8 จะคืนค่า false
ตัวอย่าง - โปรแกรม PHP 8 ใช้การเปรียบเทียบสตริงกับตัวเลขที่ปลอดภัยกว่า (Saner string to number comparisons)
<?php
$x=[
"1" => "first Integer",
"0123" =>"The integer index with leading 0",
"12str" =>"using leading numeric string",
" 1" => "using leading whitespace",
"2.2" => "using floating number",
];
print_r($x);
?>
ผลลัพธ์
Array (
[1] => first Integer
[0123] => The integer index with leading 0
[12str] => using leading numeric string
[ 1] => using leading whitespace
[2.2] => using floating number
)