PHP

비교

프로그래밍의 비교 기능은 이것만으로는 효용이 크지 않다. 후속 수업인 조건문에서 그 효용이 드러나기 때문에 조금 지루하더라도 조건문까지만 인내하자.

연산자

연산자란 값에 대해서 어떤 작업을 컴퓨터에게 지시하기 위한 기호인데 우리는 이미 연산자를 사용했다. 아래 예제 중에서 '='는 우항의 값인 1을 좌항의 변수 a에 대입하는 '대입 연산자'다. PHP의 주요 연산자는 PHP의 메뉴얼을 참고하자. 연산자가 무엇인가에 대한 이해를 돕기 위한 것일 뿐 외울 필요는 없다. 차차로 알게 된다.

$a=1;

비교 연산자

프로그래밍에서 비교란 주어진 값들이 같은지, 다른지, 큰지, 작은지를 구분하는 것을 의미한다. 이 때 비교 연산자를 사용하는데 비교 연산자의 결과는 true나 false 중의 하나다. true는 비교 결과가 참이라는 의미이고, false는 거짓이라는 뜻이다. 아래는 주요한 비교 연산자들의 종류와 그에 따른 예제들이다.

==

좌항과 우항을 비교해서 서로 값이 같다면 true 다르다면 false가 된다. '='가 두개인 것을 주의하자. '='가 하나인 것은 대입 연산자로 좌항의 값을 우항의 변수에 대입할 때 사용하는 것으로 의미가 완전히 다르다.

/compare/compare1.php

https://github.com/egoing/phpeverybody/blob/master/compare/compare1.php

<html>
<body>
<?php
echo "1==2 : ";
var_dump(1==2);           #false
echo '<br />';
echo "1==1 : ";
var_dump(1==1);           #true
echo '<br />';
echo '"one"=="two" : ';
var_dump("one"=="two");   #false
echo '<br />';
echo '"one"=="one" : ';
var_dump("one"=="one");   #true
echo '<br />';
?>
</body>
</html>

결과는 아래와 같다.

1==2 : bool(false) 
1==1 : bool(true) 
"one"=="two" : bool(false) 
"one"=="one" : bool(true) 

!=

'!'는 부정을 의미한다. '같다'의 부정은 '같지 않다'이다. 이것을 기호로는 '!='로 표시한다. 아래의 결과는 !=의 결과인데 ==와 정반대의 결과를 보여준다.

/compare/compare2.php

https://github.com/egoing/phpeverybody/blob/master/compare/compare2.php

<html>
<body>
<?php
echo "1!=2 : ";
var_dump(1!=2);           #true
echo '<br />';
echo "1!=1 : ";
var_dump(1!==1);           #false
echo '<br />';
echo '"one"!="two" : ';
var_dump("one"!="two");   #true
echo '<br />';
echo '"one"!="one" : ';
var_dump("one"!="one");   #false
echo '<br />';
?>
</body>
</html>

결과는 아래와 같다.

1!=2 : bool(true)
1!=1 : bool(false)
"one"!="two" : bool(true)
"one"!="one" : bool(false)

>

/compare/compare3.php

https://github.com/egoing/phpeverybody/blob/master/compare/compare3.php

좌항이 우항보다 크다면 참, 그렇지 않다면 거짓임을 알려주는 연산자다. '<'는 반대의 의미로 언급은 생략하겠다.

<html>
<body>
<?php
echo "10>20 : ";
var_dump(10>20);           #false
echo '<br />';
echo "10>1 : ";
var_dump(10>1);           #true
echo '<br />';
echo '10>10 : ';
var_dump(10>10);   #false
?>
</body>
</html>

결과는 아래와 같다.

10>20 : bool(false)
10>1 : bool(true)
10>10 : bool(false) 

>=

좌항이 우항보다 크거나 같다. '<='는 반대의 의미로 언급은 생략하겠다.

/compare/compare4.php

https://github.com/egoing/phpeverybody/blob/master/compare/compare4.php

<html>
<body>
<?php
echo "10>=20 : ";
var_dump(10>=20);           #false
echo '<br />';
echo "10>=1 : ";
var_dump(10>=1);           #true
echo '<br />';
echo '10>=10 : ';
var_dump(10>=10);   #true
?>
</body>
</html>

결과는 아래와 같다.

10>=20 : bool(false)
10>=1 : bool(true)
10>=10 : bool(true) 

===

/compare/compare5.php

https://github.com/egoing/phpeverybody/blob/master/compare/compare5.php

===는 좌항과 우항이 정확하게 같다는 의미다. ==와의 차이점은 ==이 형변환의 결과를 비교 하지만, ===는 양쪽 항이 데이터 형식까지 정확하게 동일해야 같은 것으로 인정한다는 점이다. 형변환이란 PHP가 코딩의 편의성을 위해서 맥락에 따라서 알아서 데이터의 형식을 변환해주는 것을 의미한다. 이에 대한 자세한 내용은 후속 수업을 통해서 살펴볼 예정이다. 아래의 예제를 보자.

echo "1 == '1' : ";
var_dump(1 == '1');
echo "<br />1 === '1' : ";
var_dump(1 === '1');

 

댓글

댓글 본문
  1. DreamBoy
    2023.10.20. PHP - 비교 파트 수강했습니다.
  2. 코딩혁명
    좋은 강의 감사드립니다~
  3. dueto park
    2022.06.28. 비교 수강 완.
  4. 코드파괴자
    22.05.19 complete.
  5. 드림보이
    2022.01.13. 비교 파트 수강완료
  6. ggyuker
    21.12.30 수강완료
  7. kyusss
    2021.09.02 수강완료!
  8. jeisyoon
    2021.07.25 Compare - OK
  9. 조성호
    2020.01.01 완료
    감사합니다.
  10. DongJune Lee
    완료
  11. choon
    감사합니다.
  12. 호두
    고맙습니다.
  13. dosamo
    완료
  14. jjung
    고고
  15. henry23
    '='가 하나인 것은 대입 연산자로 좌항의 값을 우항의 변수에 대입할 때 사용하는 것으로 의미가 완전히 다르다.
    이부분 반대로 되어야 하는거 아닌가여??
  16. 다시시작
    완료
  17. 고스트프리
    재밌네요.^^
  18. spiritord
    감사합니다
  19. kimjs9105
    감사합니다~~~
  20. 심화평
    2017-07-10 감사합니다.!~
  21. 효천
    차분하게 강의 잘듣고 있습니다.
  22. spacepublisher
    ==
    ===
    이건 자바스크립트와 똑같군요~
  23. 김세창
    오늘도 잘 배워갑니다~^^ 17.03.29
  24. Kim MinHanee
    감사합니다!
  25. 배경진
    감사합니다
  26. NamJin Kim
    감사합니다^^
  27. Sajuk
    감사합니다! 잘 봤습니다.
    PS. 자막 키고 보니까 재미있어요!
    2016-08-25
  28. 굳굳굳!
    항상 감사합니다. ㅎㅎ
  29. JustStudy
    고맙습니다
  30. 진돌
    전혀 알지 못했던 세계!!
    감사합니다!
  31. 코딩!
    감사합니다!
    반복문, 조건문을위한 비교!
  32. 유기농브래드
    항상 감사하는 마음으로 듣고 있습니다~*
  33. egoing
    아이고 감사합니다. 제가 생각하는 가장 근접한 좋은 인연입니다. ^^ 화이팅하시길요!
    대화보기
    • Seungwan Ryu
      작년에 이 사이트 알게 되어서 공부하고 겨울 동안 중단 되었다가 다시 시작하게 되었습니다. 그 사이 몰랐던건지 새로운 기능이 추가 된건지 회원가입도 했고, 공동공부란에 가서 그 동안 공부 해온 부분을 오늘 다 찍었네요.

      그리고, 오늘 검색을 통해 들어간 블로그에서 이고잉님의 본 사이트 개발까지의 히스토리와 개인 철학 등과 관련된 이야기도 알게 되었습니다.

      감사함을 어떻게 표현해야 될 지 모르겠지만, 섣부른 방법보다 열심히 하고 그 결과물을 나중에 이고잉님에게 보여 줄 수 있으면 이고잉님의 생각에 가장 근접한 감사를 나타내는 방법이 될 거 같습니다.

      열심히 하겠습니다.

      마지막으로 ... 다른 인터뷰 글을 읽다가 보니 청주와 깊은 인연이 있으신거 같더군요. 고향이 청주인 사람이라
      학연 지연으로 똘똘 뭉치면 안되지만 ... 사람인지라 청주라는 말에서 더 깊은 애정(?)이 느껴집니다. ^^;

      정말 ... 감사합니다.
    • 육점이
      궁금한 점이 하나 생겨서 질문 올려봅니다!!!

      var_dump( 1 ==="1")을하게 되면 정확히 비교를해서 boolean값인 false를 리턴하는데,
      var_dump( 1 >= "1") 는 정확히 비교하는 연산자가 없는 것인가요?
      질문을 정리하자면 !=도, 정확히 비교하기 위해서 !==를 쓰는데,
      >=는 정확히 비교하기 위해서 >==라는 것은 없는것 같고, 이와 같은 경우는 따로 정해진 연산자가 없는 것인가요?
    • 고맙습니다.
    • 행복부자
      쉽게 술술 넘어 갑니다. 이고잉님 너무 감사 드립니다.
      강의목소리도 아주 편해서 집중하기에 너무 좋습니다.
      여기까지 쉼 없이 달려 온 다음, 중간에 인사 한 번 드립니다.
    • 히시기
      감사합니다.
      대화보기
      • egoing
        수정했습니다. 감사합니다 ^^
        대화보기
        • Paul
          안녕하세요 이고잉님 강의 잘듣고 있습니다.
          근데 compare1.php 의 결과 값이 잘못된거 같네요.

          10==20 : bool(false)
          10==1 : bool(false)
          10==10 : bool(true)

          위와 같이 되어 있는데 아래와 같이 수정이 되어야 되지 싶습니다.

          1==2 : bool(false)
          1==1 : bool(true)
          "one"=="two" : bool(false)
          "one"=="one" : bool(true)

          감사드립니다.
        • 김키득
          강의 정주행 쭉 하고 있습니다 항상 감사드려요
        • 별모모
          [ === ] 자료형까지 비교합니다. 일치하지 않으면 "거짓"입니다.
          1 == '1' : bool(true)
          1 === '1' : bool(false)
        • Brownieforme
          감사합니다.
        • 포스만빵
          강의에선 === 내용이 안나오네요. 하지만 자바스크립트와 같은 원리가 패스합니다 ㅋㅋ
          배우고 나면 좀 쉬워지네요 ㅋㅋ