PHP에서 불리언 값의 느슨한 비교

이전 예시에서 비교를 위해 === 연산자를 사용했습니다. 이 경우 우리의 변수는 true와 값과 타입 모두 동일한지 비교되었습니다.

우리의 문제에서는 == 연산자도 사용할 수 있습니다. 만약 변수 test에 항상 true 또는 false 중 하나의 값만 들어온다면, 아무런 변화도 없을 것입니다:

php<?php
  $test = true; // 여기에는 true 또는 false를 씁니다
  
  if ($test == true) {
    echo '+++';
  } else {
    echo '---';
  }
?>

그러나 만약 변수 $test에 어떤 값이든 들어올 수 있다면, 모든 것이 훨씬 복잡해집니다. 그런 경우, 변수에 불리언 값이 아닌 값이 들어오면, 그 값은 먼저 불리언 타입으로 변환된 후에만 비교될 것입니다.

예를 들어, 우리 변수에 숫자 1이 있다고 가정해 봅시다. 이 경우 먼저 논리 타입, 즉 true로 변환될 것입니다. 그리고 나서 비교가 수행됩니다:

php<?php
  $test = 1;
  
  if ($test == true) {
    echo '+++'; // 이것이 동작합니다. 왜냐하면 1 == true는 참이기 때문입니다
  } else {
    echo '---';
  }
?>

반면에, 예를 들어 숫자 0은 false로 변환됩니다. 그래서 우리의 조건은 결과적으로 거짓이 될 것입니다:

php<?php
  $test = 0;
  
  if ($test == true) {
    echo '+++';
  } else {
    echo '---'; // 이것이 동작합니다. 왜냐하면 0 == true는 참이 아니기 때문입니다
  }
?>
Задание 1

코드를 실행하지 말고, 화면에 무엇이 출력될지 결정하세요:

php<?php
  $test = 1;
    
  if ($test == true) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 2

코드를 실행하지 말고, 화면에 무엇이 출력될지 결정하세요:

php<?php
  $test = 0;
    
  if ($test == true) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 3

코드를 실행하지 말고, 화면에 무엇이 출력될지 결정하세요:

php<?php
  $test = 1;
    
  if ($test == false) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 4

코드를 실행하지 말고, 화면에 무엇이 출력될지 결정하세요:

php<?php
  $test = 1;
    
  if ($test != true) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 5

코드를 실행하지 말고, 화면에 무엇이 출력될지 결정하세요:

php<?php
  $test = '';
    
  if ($test == false) {
    echo '+++';
  } else {
    echo '---';
  }
?>
Задание 6

코드를 실행하지 말고, 화면에 무엇이 출력될지 결정하세요:

php<?php
  if ($test == true) {
    echo '+++';
  } else {
    echo '---';
  }
?>