Как получить количество значений JSON цикла с массивом случайных значений, используя PHP - PullRequest
0 голосов
/ 29 апреля 2019
{
  "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 ]

1 голос
/ 29 апреля 2019
  1. Вы можете использовать json_decode для преобразования JSON в массив. PHP json_decode ()

    $jsonToArray = json_decode($json,true); // $json has the `JSON`
    
  2. Если вам нужен key с amount, вы можете использовать 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
)

ИЛИ

Если вам не нужно 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
   .......
   .......
)
1 голос
/ 29 апреля 2019

Выполните указанные шаги для получения необходимых данных.

Шаг 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"];

В этом случае егоключ return в декодированном JSON.

Шаг 4: цикл по выбранным данным для получения ключа и значений

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

$Клавиша будет содержать случайное значение, например 1400151861513776 , а значение будет содержать данные внутри этой клавиши

...