如何使用随机值数组获取循环JSON值量,请使用PHP

时间:2019-04-29 03:13:21

标签: php arrays json random

{
  "success": 1,
  "return": {
    "1400151861513776": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 138959.22155687,
      "rate": 0.00000085,
      "timestamp_created": "1556464987",
      "status": 0
    },
    "1400151861456538": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 4115.53246448,
      "rate": 0.00000085,
      "timestamp_created": "1556463520",
      "status": 0
    },
    "1400151861402138": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 252.29423504,
      "rate": 0.00000085,
      "timestamp_created": "1556462106",
      "status": 0
    },
    "1400151861205651": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 5735.02289537,
      "rate": 0.00000085,
      "timestamp_created": "1556457111",
      "status": 0
    },
    "1400151861064946": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 608.2294235,
      "rate": 0.00000085,
      "timestamp_created": "1556453555",
      "status": 0
    },
    "1400151860984352": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 13553.51532229,
      "rate": 0.00000085,
      "timestamp_created": "1556451515",
      "status": 0
    },
    "1400151860967764": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 49475.62404601,
      "rate": 0.00000085,
      "timestamp_created": "1556451103",
      "status": 0
    },
    "1400151860901030": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 21474.82564282,
      "rate": 0.00000085,
      "timestamp_created": "1556449399",
      "status": 0
    },
    "1400151860889146": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 2657.50733826,
      "rate": 0.00000085,
      "timestamp_created": "1556449090",
      "status": 0
    },
    "1400151860484795": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 71933.21911691,
      "rate": 0.00000085,
      "timestamp_created": "1556438570",
      "status": 0
    },
    "2400151859280443": {
      "pair": "edc_btc",
      "type": "sell",
      "amount": 266054.68380596,
      "rate": 0.00000088,
      "timestamp_created": "1556408217",
      "status": 0
    },
    "2400151857916444": {
      "pair": "edc_btc",
      "type": "sell",
      "amount": 400000,
      "rate": 0.0000009,
      "timestamp_created": "1556374931",
      "status": 0
    },
    "2400151857916059": {
      "pair": "edc_btc",
      "type": "sell",
      "amount": 400000,
      "rate": 0.00000089,
      "timestamp_created": "1556374923",
      "status": 0
    }
  }
}

如何获取循环值数量。此数组每次都有随机值1400151861513776..change ..

我使用php代码。json_decode ..

2 个答案:

答案 0 :(得分:1)

请按照上述步骤获取所需数据。

第1步:使数据成为有效的JSON字符串

$json_string = '{
  "success": 1,
  "return": {
    "1400151861513776": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 138959.22155687,
      "rate": 0.00000085,
      "timestamp_created": "1556464987",
      "status": 0
    },
    "1400151861456538": {
      "pair": "edc_btc",
      "type": "buy",
      "amount": 4115.53246448,
      "rate": 0.00000085,
      "timestamp_created": "1556463520",
      "status": 0
    }
  }
}';

在这里,我将您的数据用单引号引起来,使其成为有效的JSON字符串

步骤2:使用json_decode函数解码JSON字符串

$decoded_data = json_decode($json_string, $assoc=true);

使用 json_decode 函数时,请确保将 $ assoc 标志设置为 true 。否则它将返回一个对象而不是一个关联数组。

第3步:选择需要循环的数据

$selected_data = $decoded_data["return"];

在这种情况下,它是解码后的JSON中的 return 键。

第4步:遍历所选数据以获得键和值

foreach($selected_data as $key=>$value) {
  var_dump($key); # random value like 1400151861513776
}

$ 将保存随机值,例如 1400151861513776 ,而$ value 将保存该键内部的数据

答案 1 :(得分:1)

  1. 您可以使用json_decode将JSON转换为数组。 PHP json_decode()

    $jsonToArray = json_decode($json,true); // $json has the `JSON`
    
  2. 如果您需要将keyamount一起使用,则可以使用array_walk PHP array_walk()

    $jsonToArray = json_decode($json,true);
    $res = [];
    array_walk($jsonToArray['return'], function($v, $k) use (&$res){
      $res[$k] = $v['amount'];
    });
    

输出:-

Array
(
  [1400151861513776] => 138959.22155687
  [1400151861456538] => 4115.53246448
   .......
   .......
  [2400151857916444] => 400000
  [2400151857916059] => 400000
)

OR

如果您不需要key,则只有amount可以使用array_map PHP array_map()

$jsonToArray = json_decode($json,true);
$res = [];
array_map(function($v) use(&$res){
  $res[] = $v['amount'];
}, $jsonToArray['return']);

输出:-

 Array
(
  [0] => 138959.22155687
  [1] => 4115.53246448
   .......
   .......
)