2013-01-31 70 views
0

我無法將字符串轉換爲int。 陣列$輸入保持下面的值:錯誤的轉換? String => Int

array(3) { [0]=> string(6) "30" [1]=> string(2) "01" [2]=> string(9) "2013" } 

首先我刪除,因爲八阱的前導零。所以這是我的代碼:

foreach ($input as $key => $var) { 
     $input[$key] = trim($var,"0"); 
     $input[$key] = (int)$var; 
    } 

但不幸的是,結果不是statisfying。現在

array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(2013) } 

30是零?這怎麼可能?

+0

您的vardump顯示該字符串的長度爲6個字符,即具有30的字符串只應爲2,看起來您在字符串中有一些額外的字符。您可以嘗試將其轉換爲十六進制,並查看這些字符是什麼。 – datasage

+0

你可以preg_replace任何字符不是一個數字與'' –

回答

2
[0]=> string(6) "30" 

該字符串在開始時有一些不可打印的字符。它看起來像2個字符長,但實際上有6個字符。如文件所述,這些字符會導致字符串轉換爲0

你應該試着在字符串上嘗試bin2hex來查看我們正在談論的字節值,然後用這些知識來確定它們來自哪裏。

"2013"有多餘的字符,雖然它的外觀他們在這種情況下尾隨

相關問題