2010-10-04 40 views
1

對於一個有趣的項目,我想在PHP中創建一個二進制時鐘,所以基本上爲了簡單起見,我使用date("H:m:s");來獲取字符串格式的時間,然後使用str_split();將每個字符串字母分隔成一個數組。PHP:無法將字符串轉換爲int?

我的代碼是在這裏與它的工作:如果我嘗試這兩個解決該問題

$time = str_split($time); 
//I tried $time = array_map(intval, $time); here but no dice 
$tarray = Array(
    //hh:mm:ss = [0][1][3][4][6][7] 
    str_pad(decbin((int)$time[0]), 8, STR_PAD_LEFT), //I tried casting to (int) as well 
    str_pad(decbin($time[1]), 8, STR_PAD_LEFT), 
    str_pad(decbin($time[3]), 8, STR_PAD_LEFT), 
    str_pad(decbin($time[4]), 8, STR_PAD_LEFT), 
    str_pad(decbin($time[6]), 8, STR_PAD_LEFT), 
    str_pad(decbin($time[7]), 8, STR_PAD_LEFT), 
); 

不管,結果數組是例如以下(有小數旁邊的清晰度):

10000000 -> 128 
10000000 -> 128 
10000000 -> 128 
00000000 -> 0 
10000000 -> 128 
10010000 -> 144 

爲什麼那些不是1-9的二進制文件?

+0

您忘記了提問。 – zerkms 2010-10-04 05:22:06

+0

@zerkms,太忙了寫細節。 :P謝謝。 – John 2010-10-04 05:24:40

回答

3

4thstr_pad的參數是墊類型。

你做成了第3的說法。

第三個參數是爲填充而你的情況是這樣'0'試試這個用什麼:

str_pad(decbin($time[1]), 8, '0',STR_PAD_LEFT) 
          ^^^ 

隨着該修復到位,一切工作正常。

Working link

+0

是的是的,非常感謝。我在一起寫這些功能的速度如此之快,我複製並粘貼了6行,在我找到它之前傳播了這個問題。你救了我的理智。 :) – John 2010-10-04 05:26:10

0

我不確定,但你試過intval()

+0

我最初在我的代碼中作爲註釋寫了一個註釋,我用array_map,因爲某些原因它不起作用。我會再嘗試一次手動雖然..編輯:不,手動仍然不會觸摸它。 – John 2010-10-04 05:19:08