2014-06-15 65 views
0
$databtcguild = file_get_contents('http://btcguild.com'); 
preg_match('~<b>Pool Speed</b></a> (.*?) TH/s~',$databtcguild,$btcguild); 
$btcguildhashrategh = ($btcguild[1] * 1000); 

echo $btcguildhashrategh; 
echo "<br>"; 
echo $btcguild[1]; 

由於某種原因,此代碼輸出了錯誤的答案。例如,$ btcguild [1]將等於12,747,此代碼將輸出12000.我完全失去了這裏。謝謝你的幫助。PHP乘法不起作用

+3

請發佈確切輸入'$ databtcguild'的實際樣本。 –

+0

如果您希望'',作爲千位分隔符,PHP可能會誤解爲小數分隔符。例如'echo intval('12,752');'打印'12',因此你的12000乘以1000時 –

+0

這很自然,因爲文字'12,747'被解析成數字_is_ 12 - 有效數字字符'1' 2',後面跟着一個_invalid_ one,逗號 - 所以這是PHP在將其解析爲數字值時折斷的地方。如果你想要它的意思是'12.747',那麼你必須事先替換逗號。 – CBroe

回答

-2

嘗試明確地輸入結果:$btcguildhashrategh = ((double)$btcguild[1] * 1000); 否則PHP會將其轉換爲int

+1

PHP不會將它轉換爲int。如果一方是浮動,結果將是一個浮動。 – PeeHaa

+0

@PeeHaa事實上你是對的。我不認識'',而不是'' –

1

你是從該網站提取的「散列速度」的值中有一個逗號值:

PHP需要這個字符串轉換爲數值,逗號引起的數值要返回12,被解釋爲十進制)

確保您去除所有非數字字符乘以前:

//keep only values 0-9 and decimal (period) 
$hash_speed = preg_replace("/[^0-9.]/", "", $btcguild[1]); 

$btcguildhashrategh = ($hash_speed * 1000); //returns 12747000