2009-05-05 49 views
2

我有一個變量,通過POST調用從輸入到文本字段的窗體中定義。有什麼辦法將這個變量轉換爲整數?如何在PHP中將文本變量更改爲int?

從形式:

Lenght: <input name="length" value="10" type="text" id="lenght" size="2" /> 

從PHP代碼:

$length = $_POST['lenght']; 
$url = substr($url, 0, $length); 

這似乎並沒有工作,唯一的原因,我認爲這是不工作是因爲$ lenght被定義爲文本而不是整數。

+0

$ _POST ['lenght'];那是意外嗎? – TStamper 2009-05-05 19:30:11

+0

我知道我錯拼的長度。我使用的是沒有內置拼寫檢查器的IE6。不知道我是如何倖存下來的...... – JoshFinnie 2009-05-05 22:20:18

回答

15

兩件事情:

  1. 它不工作,因爲你拼錯的長度< - > lenght

  2. 一個字符串轉換爲整數使用函數intval要轉換的正確方法。


$length = intval($_POST['length']); 
$url = substr($url, 0, $length); 
2

似乎是您的代碼中的拼寫錯誤:長度與長度 - 這可能是您的問題。

做一個明確的轉換,使用函數intval()

$length = intval($_POST['length']); 
10

它可能不會兩次的,因爲你拼錯的長度,而不是零和或三次工作。

0

如果你確信你正在尋找的價值已經爲你想要轉換成,你也可以用香草類型轉換操作的類型的正確表示:

$int = (int) "1"; // var_dump($int) => int(1) 
$float = (float) "1.2345"; // var_dump($float) => float(1.2345) 

請注意您要轉換的變量的不正確表示,即將「隨機字符串」轉換爲數字可能不會產生您期望的結果。如果您在處理用戶輸入,你使用上述建議的解決方案與函數調用,如INTVALfloatval

1

忽略上面的「長」的拼寫錯誤的更好,也有一些方法來顯式轉換一個字符串轉換爲PHP中的一個整數。通常這種轉換將自動發生。採取以下代碼:

$numeric_string = '42'; 
echo ($numeric_string * 2); 

這將打印出「84」,如預期。請參閱Type-Juggling上的參考資料。

如果你知道你的字符串是一個數字(可能通過檢查is_numeric()),那麼你可以cast the variable to an Integer

$numeric_string = '42'; 
$converted_integer = (int) $numeric_string; 
// or 
$converted_integer = (integer) $numeric_string; 

或使用intval()

$numeric_string = '42'; 
$converted_integer = intval($numeric_string); 

重要的一點要記住的INTVAL ()是它將返回0,如果它不能將字符串解析爲Integer。這可能(潛在地)給你第二種方法來檢查錯誤(在is_numeric()之後),或者如果你不能確保變量是數字開頭的話,它可能會導致意想不到的結果。