is_int($_GET['pid']) ? define(PRODUCT, $_GET['pid']) : die('Invalid Product Id');
pid 값이 정수 인 경우에도 여전히 잘못된 제품 ID 메시지가 표시됩니다. 왜?이 간단한 PHP 라인의 문제점은 무엇입니까?
is_int($_GET['pid']) ? define(PRODUCT, $_GET['pid']) : die('Invalid Product Id');
pid 값이 정수 인 경우에도 여전히 잘못된 제품 ID 메시지가 표시됩니다. 왜?이 간단한 PHP 라인의 문제점은 무엇입니까?
마찬가지로 manual과 같습니다 : 변수가 숫자 또는 숫자 문자열 (양식 입력, 항상 문자열)인지 테스트하려면 is_numeric()을 사용해야합니다.
편집 : 내 대답은 여기에 암시되어 있지만 더 구체적 일 것입니다. $_GET
의 내용이 문자열이므로 is_int
호출은 항상 false를 반환합니다. 여기에서 실제로 확인하려는 내용은 특정 문자열의 내용이
정수
숫자를 나타내는 경우 is_numeric
으로 전화를 걸 수 있습니다.
"... 특정 문자열의 내용이 정수를 나타내는 지 확인하려면 is_numeric에 대한 호출을 사용할 수 있습니다." 아닙니다. _is_numeric() _을 통해서만 정수라는 것을 확인할 수 있습니다. 정수가 아닙니다. 크리스의 대답을보십시오. – GZipp
$_GET[]
은 항상 문자열을 반환하므로 is_int()
은 항상 false
으로 평가됩니다. 대신 is_numeric()
을 시도하십시오.
8 초 빨라지고 내 (동일한) 답변을 삭제합니다 ;-) – ChristopheD
$_GET
의 문자열은 모두 문자열이며 is_int("2")
은 false
을 반환합니다.
$ _GET 배열의 값은 대개 유형 문자열이지만, 때로는 배열을 입력하는 경우도 있습니다.
ctype_digit()을 사용하여 문자열이 완전히 숫자인지 확인합니다. 선택적으로 문자열을 먼저 trim()합니다. 십진수, 과학적 표기법, 16 진수 문자열 등과 같이 숫자로 해석되는 다양한 형식의 문자열을 허용하려는 경우에만 is_numeric()을 사용하십시오.
다음 예에서 볼 수 있습니다. var_dump (is_int ("23"));'bool (false)'를 출력합니다. 실제로 질문에 대한 답변 : 코드에 잘못된 것이 없습니다. 유일한 방법은이 방법으로 삼항 연산자를 사용하면 안된다는 것입니다. 실제로 값을 지정하는 경우에만 사용해야합니다 (다시 : imo). –
답이 아니라 단지 조언 : 제어 흐름 (하나의 명령문 또는 다른 명령문 실행)에 대해 3 진 연산자'? :'를 사용하지 마십시오. 예를 들어'x = (y> 5? 'high': 'low')'와 같이 표현식으로 사용하기위한 것입니다. 이 경우'if (...) {...} else {...}'를 사용하십시오. –