2012-07-12 118 views
1

我有的張貼數組,它看起來像這樣一種形式:PHP奇怪is_int行爲

Array 
(
    [SearchForm] => Array 
    (
     [query] => Eg: 2 Bedroom Flat Chelsea 
     [rent] => 1 
     [share] => 0 
     [short] => 1 
     [price_min] => 50 
     [price_max] => 100 
    ) 

    [yt0] => Search 
) 

我要檢查如果$_REQUEST['SearchForm']['price_min']值不爲空,且爲整數。我使用:

if (($_REQUEST['SearchForm']['price_min'] != "") && (is_int($_REQUEST['SearchForm']['price_min']))){ 
    ... 
} 

is_int是返回false(在如果沒有執行的語句) 任何想法,爲什麼?

+1

對於字符串,'is_int'不返回true,即使字符串是數字。 'var_dump'的price_min,看看它是否被保存爲一個字符串。如果是,則改爲使用'ctype_digit'。 – Palladium 2012-07-12 21:23:49

回答

5

因爲POST和GET參數總是字符串,這樣反而is_int使用is_numeric

+0

涼爽的潮溼。我不知道 – 2012-07-12 21:27:07

+0

注意is_numeric也接受「44.43」,「0x123」,「4e2」 – Weidenrinde 2013-07-03 18:37:07

1

值可能是"50"而不是50(這是一個字符串)。嘗試is_numeric()而不是is_int()

0

如果結果來自貼出的html表單,該值是最有可能的字符串。

您可以使用is_numeric來檢查有效的數字字符串。