2011-02-04 69 views
1

的PHP SUBSTR函數不接受整數轉換字符串...:PPHP SUBSTR - 第一個參數不接受整數

情況

如果我離開像代碼這一點,它的工作原理:

<?php 

$key = '35110100840754000150550010000014301000000809'; 
echo substr($key, 35, -1); 

?> 

,結果是正確的:

00000080 

問題

但我得到一個整型變量此鍵(從數據庫)。所以結果爲零,並且類似於我從此代碼得到的結果:

<?php 

$key = 35110100840754000150550010000014301000000809; 
echo substr($key, 35, -1); 

?> 

而結果是一個空白字符串。

我什麼都試過,像(串)鑄造,SUBSTR($關鍵。 「」 35,-1),它不工作。

有沒有人有任何建議?

回答

3

如果數據庫返回一個整數值,那麼它受32位(或64位,位服務器)的限制。即使是64位服務器,35110100840754000150550010000014301000000809的方式也超過了最大整數值。 它可能會轉換爲浮點數,在這種情況下,您將失去準確性。

讓您的數據庫查詢投它作爲一個字符串,並應解決您的問題

+1

+1的合理解決方案。 – horatio 2011-02-04 14:58:45

+0

你完全正確!非常感謝你! – 2011-02-04 15:52:06

0

strval()可能工作。檢查這個相關SO帖子,在PHP中處理字符串和mysql: Converting an integer to a string in PHP

+0

嗨Girish!我嘗試鑄造(字符串)$ key和strval($ key)並且它不起作用...:P – 2011-02-04 15:50:31

+0

正如Baker先生在你的情況中指出int太大。 – 2011-02-04 16:36:57

1

的數量太大,是在PHP的整數,看到manual

在你的情況下,35110100840754000150550010000014301000000809將是類似於3.5110100840754E43(給出或帶幾位數字)。當你從位置35(在字符串結尾......之後)開始時,結果將是NULL

1

嘗試在substr之後打印$ key。你會看到該函數後的數字已經爲空。 的整數的範圍是-2147483648到2147483647

應用類型轉換中的值,轉換爲字符串,strval()或(字符串)$鍵

0

問題的根源在於,數轉換當你分配它時,它會溢出整數值。