[PHP] PHP 7.x PHP 8.x에서의 조건문

if ($a < 0) echo __function($a);


위와 같은 PHP 코드가 문제를 일으켰다.


Comparison    | Before | After
------------------------------
 0 == "0"     | true   | true
 0 == "0.0"   | true   | true
 0 == "foo"   | true   | false
 0 == ""      | true   | false
42 == "   42" | true   | true
42 == "42foo" | true   | false

$a 값이 "" 인경우 PHP 8.x 에서는 ($a < 0) 가 true 가 되어 ___func($a)가 수행되는 문제가 발생


if ((int)$a < 0) echo __function($a);

처럼 int로 변환후 비교하도록 수정해서 처리 ㅠ.ㅠ


PHP 에서 조건문에 empty 를 이용한 파라미터 검사 같은경우 문제가 많음.

파라미터가 있다 없다를 isset으로 검사하는 게 문제가 될 수 있음.

디폴트 값이 0 또는 "" 가 같이 false로 처리되는데

0의 경우는 값을 입력한 것으로도 봐야 되기 때문에 파라미터가 있다없다의 경우는 strlen($a)로 처리하는 것이 좋을 것 같다.


default 값의 경우 0을 왠만하면 안쓰는게 좋을 것 같다.. 그러면 그냥 empty로 해결될 수 있음 ^.^ 그러나 현실은 0이 대부분이라...

function pOk($p)

{

     return strlen($p);

}


처럼 만들어 사용하는 것이 무난한 방법이 될 듯.









0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
62 [Linux] CentOS postfix 메일서버 설치 및 설정(sendmail 설정) 최고관리자 12-23 1,491
61 [Ubuntu] 인터넷 연결이 안될 때 최고관리자 12-07 1,298
60 [Apache SSL] Ubuntu 인증서(전자서명) 최고관리자 11-24 1,410
59 [Ubuntu] ssl 임시 인증서 준비 및 발급받기 최고관리자 11-23 1,801
58 [Ubuntu] apache2 환경설정 생성기 최고관리자 11-23 3,017
57 [Ubuntu] apache2 설치 최고관리자 11-23 1,317
56 [vi 편집기] 단축키 최고관리자 11-23 1,246
55 [유용한 블로그] ^^.^^ 최고관리자 11-19 1,254
54 [JS] TimelineJS - 시간의 흐름을 네비게이션화 최고관리자 11-19 1,321
53 [JS] 스크롤을 감지하여 사이트의 헤더를 보이거나 숨기기 최고관리자 11-19 1,457
52 [Linux] NAS Mount 최고관리자 11-12 1,271
51 [React] React활용 최고관리자 11-10 1,313
50 [PHP] exec 실행에 대한 응답코드 최고관리자 11-02 1,661
49 [Linux] Shell Script 최고관리자 10-26 1,568
48 [폰트] 폰트 찾기 사이트 최고관리자 10-21 1,371
47 [통신] Socket packet test Program 최고관리자 10-20 1,854
46 [통신] 맥용 Socket Test Program 최고관리자 10-20 1,645
45 [통신] Mac에서 TCP Socket통신 테스트 하기 최고관리자 10-20 2,917
44 [NginX] 504 Gateway Time-out 에러와 해결방법 +1 최고관리자 10-16 24,615
43 [NginX] 설정 최고관리자 10-13 1,582