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

웹개발

번호 제목 글쓴이 날짜 조회수
122 [Dart] Dart 문법 정리 최고관리자 09-09 24,465
121 [Flutter] absorbpointer-and-ignorepointer 최고관리자 09-08 23,791
120 [PHP] 타입선언 최고관리자 08-22 23,622
119 [PHP] error_level 셋팅과 실제 출력 최고관리자 08-21 23,723
118 [MySql] 타입지정시 괄호안의 숫자 최고관리자 08-18 23,754
117 [MySql] MySQL 최적의 데이터 타입 선택 방법 최고관리자 08-18 23,433
116 [MySql] 인덱스 조회시 주의 사항 최고관리자 08-18 23,434
115 [MySql] NOT NULL과 DEFAULT 를 동시에 쓸 필요가 있는가? 최고관리자 08-18 23,454
114 [Flutter] Row and Column 최고관리자 08-16 23,316
113 [Flutter] Linting 설정으로, 흔하게 실수할 수 있는 것을 build 전 방지하기. 최고관리자 08-16 23,477
112 [PHP] PHP 7.x PHP 8.x에서의 조건문 최고관리자 07-26 23,449
111 [JS] Webpack을 쓰는 이유 최고관리자 07-24 23,507
110 [Vue] Vue Router 최고관리자 07-22 23,387
109 [Vue] Vue.js 기본 원리 최고관리자 07-22 23,875
108 [MySql] 쿼리 결과를 합치는 union vs union all의 차이 최고관리자 07-10 23,399
107 [Vue] 일반적인 프로젝트의 구조에 대해 알아보자. 최고관리자 06-18 23,464
106 [JSP] vue등의 스크립트 분석을 위해 %태그 정도는 알자. 최고관리자 06-18 23,594
105 [MySql] 페이징(paging) 쿼리시 전체개수를 한번에 처리하는 방법 최고관리자 06-14 24,233
104 [MySql] Join vs Sub Query 비교 최고관리자 06-05 23,643
103 [SQL] SQL Join에 대한 이해 최고관리자 06-05 23,495