ปัญหาของการไม่จำเป็นต้องใช้วงเล็บปีกกาในเงื่อนไข if ใน PHP

แม้ว่า PHP จะอนุญาตให้ใช้รูปแบบย่อที่แสดงไว้ข้างต้นโดยไม่ใช้วงเล็บปีกกา แต่โดยทั่วไปแล้วฉันไม่แนะนำให้ทำเช่นนั้น เนื่องจากมันเป็นแหล่งเพาะพันธุ์ของข้อผิดพลาดที่ตรวจจับได้ยาก

ตัวอย่างเช่น สมมติว่ามีโค้ดต่อไปนี้:

php<?php
  $test = 3;
  
  if ($test > 0)
    echo $test;
?>

ตอนนี้สมมติว่าเราตัดสินใจว่าหากเงื่อนไขเป็นจริง เราจะทำการecho ที่สองเพิ่มเติม:

php<?php
  $test = 3;
  
  if ($test > 0)
    echo $test;
    echo '+++';
?>

อย่างไรก็ตาม หากไม่มีวงเล็บปีกกา มีเพียงคำสั่งแสดงผลแรกเท่านั้นที่อยู่ภายในเงื่อนไข นั่นคือคำสั่งแสดงผลแรกจะทำงานเมื่อเงื่อนไขเป็นจริง ส่วนคำสั่งที่สองจะทำงานเสมอ

ที่จริงแล้วโค้ดของเราเทียบเท่ากับโค้ดดังต่อไปนี้:

php<?php
  $test = 3;
  
  if ($test > 0) {
    echo $test;
  }
  
  echo '+++'; // บรรทัดนี้อยู่ภายนอกเงื่อนไข
?>

แต่สิ่งที่เราต้องการคือโค้ดแบบนี้:

php<?php
  $test = 3;
  
  if ($test > 0) {
      echo $test;
      echo '+++'; // บรรทัดนี้อยู่ภายในเงื่อนไข
  }
?>

นี่คือเหตุผลที่แนะนำให้ใช้การจัดวางวงเล็บปีกกาเสมอ เพื่อไม่ให้ตกอยู่ในข้อผิดพลาดประเภทนี้

Задание 1

โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะถูกแสดงบนหน้าจอ:

php<?php
  $num = 5;
  
  if ($num === 5)
    echo $num;
    echo '+++';
?>
Задание 2

โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะถูกแสดงบนหน้าจอ:

php<?php
  $num = 0;
  
  if ($num === 5)
    echo $num;
    echo '+++';
?>
Задание 3

โดยไม่ต้องรันโค้ด จงพิจารณาว่าอะไรจะถูกแสดงบนหน้าจอ:

php<?php
  $num = 0;
  
  if ($num === 5)
    echo $num;
    echo '---';
  echo '+++';
?>