Vấn đề về tính không bắt buộc của dấu ngoặc nhọn trong điều kiện PHP
Dù PHP cho phép viết tắt như đã trình bày ở trên (với dấu ngoặc nhọn), nhưng nhìn chung tôi không khuyến nghị làm như vậy, vì đó là mảnh đất màu mỡ cho những lỗi khó phát hiện.
Ví dụ, giả sử có đoạn mã sau:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Bây giờ giả sử chúng ta quyết định trong trường hợp
điều kiện đúng, sẽ thực hiện thêm lệnh echo thứ hai:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Tuy nhiên, khi không có dấu ngoặc nhọn, chỉ có lệnh đầu tiên nằm bên trong điều kiện, tức là lệnh đầu sẽ thực thi khi điều kiện đúng, còn lệnh thứ hai - luôn luôn thực thi.
Thực tế, mã của chúng ta tương đương với mã sau:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // dòng này đã ở ngoài điều kiện
?>
Trong khi chúng ta muốn có mã như thế này:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // dòng này nằm trong điều kiện
}
?>
Chính vì vậy, nên luôn luôn sử dụng dấu ngoặc nhọn, để không mắc phải những lỗi kiểu như vậy.
Không chạy mã, hãy xác định xem màn hình sẽ hiển thị điều gì:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Không chạy mã, hãy xác định xem màn hình sẽ hiển thị điều gì:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Không chạy mã, hãy xác định xem màn hình sẽ hiển thị điều gì:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>