ปัญหาของการไม่จำเป็นต้องใช้วงเล็บปีกกาในเงื่อนไข if ใน PHP
แม้ว่า PHP จะอนุญาตให้ใช้รูปแบบย่อที่แสดงไว้ข้างต้นโดยไม่ใช้วงเล็บปีกกา แต่โดยทั่วไปแล้วฉันไม่แนะนำให้ทำเช่นนั้น เนื่องจากมันเป็นแหล่งเพาะพันธุ์ของข้อผิดพลาดที่ตรวจจับได้ยาก
ตัวอย่างเช่น สมมติว่ามีโค้ดต่อไปนี้:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
ตอนนี้สมมติว่าเราตัดสินใจว่าหากเงื่อนไขเป็นจริง เราจะทำการecho ที่สองเพิ่มเติม:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
อย่างไรก็ตาม หากไม่มีวงเล็บปีกกา มีเพียงคำสั่งแสดงผลแรกเท่านั้นที่อยู่ภายในเงื่อนไข นั่นคือคำสั่งแสดงผลแรกจะทำงานเมื่อเงื่อนไขเป็นจริง ส่วนคำสั่งที่สองจะทำงานเสมอ
ที่จริงแล้วโค้ดของเราเทียบเท่ากับโค้ดดังต่อไปนี้:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // บรรทัดนี้อยู่ภายนอกเงื่อนไข
?>
แต่สิ่งที่เราต้องการคือโค้ดแบบนี้:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // บรรทัดนี้อยู่ภายในเงื่อนไข
}
?>
นี่คือเหตุผลที่แนะนำให้ใช้การจัดวางวงเล็บปีกกาเสมอ เพื่อไม่ให้ตกอยู่ในข้อผิดพลาดประเภทนี้
โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะถูกแสดงบนหน้าจอ:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะถูกแสดงบนหน้าจอ:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะถูกแสดงบนหน้าจอ:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>