[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
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
22 [리눅스] Apache Document Root 권한설정 최고관리자 09-04 1,626
21 [리눅스] CentOS Version 확인하기 최고관리자 09-04 1,462
20 [리눅스] MySQL 최초 접속 및 설정 최고관리자 09-03 1,754
19 [리눅스] MySQL 5.7 보안설정 최고관리자 09-03 1,551
18 [리눅스] RDate로 시간 동기화 하기. 최고관리자 09-03 1,476
17 [리눅스] 기본설치 (Apache , PHP , MySql) 최고관리자 09-03 2,032
16 [공부] 프로그래밍 공부 사이트 최고관리자 09-01 1,407
15 [기능] Mobile 메뉴 최고관리자 09-01 1,374
14 [기능] Mega Menu 최고관리자 09-01 1,422
13 [기능] 상단에서 메뉴높이가 높고 아래로 스크롤하면 메뉴높이가 줄어듦 최고관리자 09-01 1,426
12 [기능] 상단에 메뉴가 보이다가 아래로 스크롤하면 메뉴가 사라지고 상단으로 가면 메뉴가 보임. 최고관리자 09-01 1,345
11 [기능] 메뉴가 안 보이다가 아래로 스크롤하면 메뉴가 생김 최고관리자 09-01 1,447
10 [기능] Icon으로 구성된 수직/수평 메뉴 최고관리자 09-01 1,292
9 [JS] 자바스크립트 {...} [...] 문법 (비구조화 할당/구조분해 할당) 최고관리자 09-01 1,301
8 [기능] 상단의 높이가 큰 메뉴상태에서 아래로 스크롤하면 상단에 높이가 낮은 메뉴가 고정됨 최고관리자 09-01 1,304
7 [Font] Naversoftware 폰트 리스트 최고관리자 09-01 1,368
6 [Web Font] 직접입력해서 폰트를 확인할 수 있는 사이트 최고관리자 09-01 1,358
5 [CSS - font] unicode-range 최고관리자 08-31 1,585
4 [UI 참고] Oven - 회원가입 최고관리자 08-31 1,321
3 타자기체 - 가로 세로 비율이 고정되어 있는 글꼴로 표현 최고관리자 08-08 1,410