Цикл по json_encode

184
18 марта 2019, 23:40

Есть такой массив:

Array
(
    [status] => 1
    [message] => OK
    [result] => Array
        (
            [0] => Array
                (
                    [blockNumber] => 6604980
                    [timeStamp] => 1540812005
                    [hash] => 0x84efa9561e7798f0dcb40bd5161b78d478c4e42fe63f655f0a95843b9434201e
                    [nonce] => 46
                    [blockHash] => 0xc68ddacfca6c993e792322036f0d29db04e5a2dd28d5da725254748de1b9d82a
                    [from] => 0x83fa77ca33c0e9bad8df878ed585a53c9166dda4
                    [to] => 0xca47c4de3dd482bbb493ab0e6112a3fb9ac22292
                    [contractAddress] => 0xd69834f67b2f5a760617cc9a9bf5ae3a3bb256c2
                    [value] => 2198710000000000000000
                    [tokenName] => 
                    [tokenSymbol] => 
                    [tokenDecimal] => 
                    [transactionIndex] => 34
                    [gas] => 54322
                    [gasPrice] => 10000000000
                    [gasUsed] => 36663
                    [cumulativeGasUsed] => 2109857
                    [input] => 0xa9059cbb000000000000000000000000ca47c4de3dd482bbb493ab0e6112a3fb9ac22292000000000000000000000000000000000000000000000077313b17bc331f0000
                    [confirmations] => 8814
                )
            [1] => Array
                (
                    [blockNumber] => 6605055
                    [timeStamp] => 1540813043
                    [hash] => 0x2f0dd3d985745a48a06dad921a19b60a925b32e891ab1373dd8e0c04407f8333
                    [nonce] => 47
                    [blockHash] => 0xfc8a3ed90b636537d04a35527a94dbc4c9e56ca2322a6cd4f837aecb10737a91
                    [from] => 0x83fa77ca33c0e9bad8df878ed585a53c9166dda4
                    [to] => 0xca47c4de3dd482bbb493ab0e6112a3fb9ac22292
                    [contractAddress] => 0x2536145fbdf298877f8b8ec4c26cc6bc07032dba
                    [value] => 25900000000000000000000
                    [tokenName] => Veritium
                    [tokenSymbol] => VRTM
                    [tokenDecimal] => 18
                    [transactionIndex] => 34
                    [gas] => 100000
                    [gasPrice] => 5000000000
                    [gasUsed] => 36745
                    [cumulativeGasUsed] => 2877378
                    [input] => 0xa9059cbb000000000000000000000000ca47c4de3dd482bbb493ab0e6112a3fb9ac2229200000000000000000000000000000000000000000000057c0ab447eb39300000
                    [confirmations] => 8739
                )
        )
)

Как можно получить в итоге пары значений contractAddress - value, только адрес контракта определенный, допустим 0x2536145fbdf298877f8b8ec4c26cc6bc07032dba Не знаю как добавить условие в цикл на адрес определнного контракта

function get_course() {
     $data = file_get_contents("http://api.etherscan.io/api?module=account&action=tokentx&address=0xca47c4de3dd482bbb493ab0e6112a3fb9ac22292&startblock=0&endblock=999999999&sort=asc&apikey=XSEG5ZTQQDXWQWG32TWMQ27NTFDFA8R9N9");
      $data = json_decode($data, true);
    foreach ($data["result"] as $key => $value) {
    echo $value['value'],"\n";
   } 

}
Answer 1

Первый вариант:

$data = file_get_contents("http://api.etherscan.io/api?module=account&action=tokentx&address=0xca47c4de3dd482bbb493ab0e6112a3fb9ac22292&startblock=0&endblock=999999999&sort=asc&apikey=XSEG5ZTQQDXWQWG32TWMQ27NTFDFA8R9N9");
$data = json_decode($data, true);
$data = $data['result'];
foreach ($data as $value) {
    if ('0x2536145fbdf298877f8b8ec4c26cc6bc07032dba' === $value['contractAddress']) {
        echo $value['value']; //25900000000000000000000
    }
}

Второй вариант:

$data = file_get_contents("http://api.etherscan.io/api?module=account&action=tokentx&address=0xca47c4de3dd482bbb493ab0e6112a3fb9ac22292&startblock=0&endblock=999999999&sort=asc&apikey=XSEG5ZTQQDXWQWG32TWMQ27NTFDFA8R9N9");
$data = json_decode($data, true);
$data = $data['result'];
$data = array_filter($data, function($value) {
    return'0x2536145fbdf298877f8b8ec4c26cc6bc07032dba' === $value['contractAddress'];
});
$data = current($data);
echo $data['value']; //25900000000000000000000

Можно еще вариантов насобирать, 1 вариант самый быстрый.

READ ALSO
Как получить одно и тоже случайное число при одинаково заданных начальных условиях? [закрыт]

Как получить одно и тоже случайное число при одинаково заданных начальных условиях? [закрыт]

Нужно использовать генератор случайных чисел который при заданном начальном условии генерировал одно и тоже число

109
Фильтрация при двойном агрегировании elasticsearch

Фильтрация при двойном агрегировании elasticsearch

Я делаю вот такую агригацию:

149
Curl Ответ сервера 0

Curl Ответ сервера 0

такой вопросЕсть база с номерами на 400 тыс товаров

150
регулярка для телефона

регулярка для телефона

Ищу по регвыражению рос

145