2011-12-09 77 views
1

我真的不明白爲什麼這不起作用,請大家幫忙。我試圖將一個str轉換爲一個int,然後用if語句來處理,但由於某種原因,我不能。代碼跳過if語句,就像它甚至不在那裏?使用PHP嘗試將str轉換爲int

<?php 
$cost = $_REQUEST['cost']; 
$cost = (int) $cost; 

if($cost < 2){ 
    header('Location: page.php?say=numerror'); 
} 
?> 

<input name="cost" id="cost" type="text" class="tfield" /> 
+1

您是否收到錯誤消息? – rdlowrey

+0

請給出適當的描述什麼可行,什麼不可行。什麼是輸入?什麼是預期的和實際的行爲? – mario

+1

做一個var_dump($ _ REQUEST ['cost']);並查看內容。 –

回答

1

我懷疑你需要:

if ($cost < 2) { 
    exit(header('Location: page.php?say=numerror')); 
} 
+0

哇!我從不使用exit();它的工作:)哇!我會記住這一點。現在我可以回去工作了。 – yanike

+0

雖然這不是你的實際錯誤。啓用'error_reporting(E_ALL);'爲您的腳本。 – mario

+1

爲什麼沒有退出就無法工作?沒有意義。 – motto

1

試試這個:

<?php 
$cost = $_REQUEST['cost']; 
$cost = intval($cost); 

if($cost < 2){ 
header('Location: page.php?say=numerror'); 
} 
?> 

// HTML 
<input name="cost" id="cost" type="text" class="tfield" /> 

這裏更多的是在 intval() PHP reference manual INTVAL()函數。我希望這會有所幫助。

如果這沒有幫助你。這裏是PHP函數,你可以從字符串中分離出整數。

<?php 
function str2int($string, $concat = true) { 
$length = strlen($string); 
for ($i = 0, $int = '', $concat_flag = true; $i < $length; $i++) { 
    if (is_numeric($string[$i]) && $concat_flag) { 
     $int .= $string[$i]; 
    } elseif(!$concat && $concat_flag && strlen($int) > 0) { 
     $concat_flag = false; 
    }  
} 

return (int) $int; 
} 

// Callings 
echo var_dump(str2int('sh12apen11')); // int(12) 
echo var_dump(str2int('sh12apen11', false)); // int(1211) 
echo var_dump(str2int('shap99en')); // int(99) 
echo var_dump(intval('shap99en')); // int(0) 
?> 

P.S功能從鏈接複製的上方。不是我的。

+2

op語句($ cost =(int)$ cost;)足夠工作 –

+0

我當然沒有反對你,但是寫這個函數的人str2int是個傻瓜。他可以寫一個單行函數來使用正則表達式來做同樣的事情。 –

+0

@FilipKrstic我同意Aurelio:這不是一個好的答案,'str2int'甚至沒有做OP所需要的。 – middus

1

爲什麼你需要一個轉換隻需要使用這樣的:

<?php 
$cost = $_REQUEST['cost']; 
if($cost < 2 or !is_numeric($cost)){ 
header('Location: page.php?say=numerror'); 
} 
?> 
<input name="cost" id="cost" type="text" class="tfield" />