2011-11-29 4 views
8

내가 알기로는 ...각각 is_numeric() 대 is_float() 대 is_int()

다음 is_numeric($input) === true

중 하나

is_float($input) === true 또는

is_int($input) === true 또는

경우 $input === 0 또는

$input은 숫자 문자열입니다 (따옴표로 묶이지 않은 경우 첫 번째 3 개 중 하나를 만족한다는 의미입니다).

정확합니까? 다른 차이점이 있습니까?

+2

이 테이블의 내용을 읽으십시오 : http://php.net/manual/en/language.types.php 어쩌면 이것이 당신이 찾고있는 것입니다 .. –

+0

나는 수레가 무엇인지 가장 혼란 스러웠습니다. 나는 그것이 플로트 (float) 인 것도 수치이지만 반대가 아닌 것을 취한다. – ryanve

답변

24

참조 PHP의 문서의 대부분을 포함하는 긍정적 진수

  • 문자열입니다. 허용되는 모든 것을 말하면 is_floatis_int 이상입니다.


    is_int는 문자열 표현은 허용되지 않습니다 의미, 유형 정수를 것들에 작동하는 것을 유의하는 것이 중요합니다. 이는 양식 입력이 정수인지를 확인할 때 일반적으로 발생하는 문제입니다. filter_var 또는 FILTER_VALIDATE_INT 필터가있는 필터 제품군의 항목을 사용해야합니다. 부유물의 경우 FILTER_VALIDATE_FLOAT을 사용하십시오. 당신이 정수를 확인하려고하는 이유는 int를 것으로 매개 변수를 확인하는 경우


    또한, 다음 PHP 7 당신은이 작업을 수행 할 수 있습니다

    function foo(int $i) { 
        // $i is guaranteed to be an int (is_int) will be true 
    } 
    

    PHP (7)이있다 int로 변환하기위한 다른 모드; this answer에서 자세히 설명합니다.

    양식 요소의 내용을 확인하는 경우 원하는 내용이 아닐 수 있습니다. 이를 위해 filter_var 솔루션을 사용하십시오.

  • +0

    Thx -'filter_var'에 대한 유용한 팁 – ryanve

    +0

    함수가 필요 없으면 정수로 캐스팅 할 수 있습니다 :'$ n = (int) $ i' –

    2

    docs을 참조하십시오. 숫자 값은 다음과 같습니다

    • 정수
    • 하는 부동 소수점
    • 지수
    • is_numeric에서 이러한
    +0

    Thx // 지수 표기법은 수레에 포함됩니다. 여러분은 헥스에 대해 옳았습니다. 그렇지 않은 것처럼 보이고 is_hex 함수가 없습니다. – ryanve

    +0

    @ryanve PHP 용이지만 일반적으로 Exponential (scientific)을 float로 간주하지 않습니다. – fncomp