如何将特定字符串从动态json的url转换为int?

时间:2018-02-06 05:02:31

标签: php json

我想删除""来自json的几个字符串,每隔几分钟更新一次(http://zergpool.com/api/status)。

例如:

{"bitcore":{"name":"bitcore","port":3556,"coins":1,"fees":0,"hashrate":0,"workers":0,"estimate_current":"0.00001745","estimate_last24h":"0.00001756","actual_last24h":"0.00000","hashrate_last24h":105820474.1458},

字段:

"estimate_current":"0.00001745" -> "estimate_current":0.00001745

"estimate_last24h":"0.00001756" -> "estimate_last24h":0.00001756

"actual_last24h":"0.00000" -> "actual_last24h":0.00000

由于数字一直在变化,是否可以编写PHP来实时转换它们?这就是我所做的。

<?php

$url = 'http://zergpool.com/api/status';
$data = file_get_contents($url);

$manage = json_decode($data,true);

//$aha = (int)preg_replace("/[^\d]+/","",$manage); // tried removing them like this... doesn't work.

echo json_encode($manage)

不起作用:(

3 个答案:

答案 0 :(得分:1)

您可以使用此功能从JSON中的数值中删除引号。

$encoded = json_encode($data, JSON_NUMERIC_CHECK);

版本>= PHP 5.3

支持

答案 1 :(得分:0)

试试这个:

$json = file_get_contents("https://www.ahashpool.com/api/status/");
$ar = json_decode($json, TRUE);
$filter = [];
foreach ($ar as $k => $sub_ar) {
    foreach ($sub_ar as $sub_k => $sub_v) {
        if(preg_match('/^[0-9]*\.[0-9]+$/', $sub_v)){
            $filter[$k][$sub_k] = (float) $sub_v;
        } else {
            $filter[$k][$sub_k] = $sub_v;
        }
    }
}
echo "<pre>";
var_dump($filter);
die();

答案 2 :(得分:0)

echo str_replace( '"', '' ,$data); 

将删除所有双引号。

我不明白为什么要尝试从$ manage行中删除双引号。您只需访问$ manage中返回的json元素并转换为float。

$firstString = $manage['bitcore']['estimate_current']; 
$firstFloat = (float)$firstString;
var_dump($firstFloat);

echo 'floatval=' . floatval($firstString);