Как можно эффективно извлечь значение из списка объектов?

Как преобразовать JSON-объект в массив и корректно обработать данные для вывода информации о валюте XRPUSDT и ее цене с использованием цикла `foreach` в PHP? Какие изменения в коде могут сделать его более предсказуемым и эффективным?
  • 5 марта 2024 г. 15:18
Ответы на вопрос 2
Для эффективного извлечения значения из списка объектов можно воспользоваться методами языка программирования, поддерживающими работу с коллекциями. Например, в языке PHP можно использовать функции для работы с массивами, такие как `array_map` или `array_column`, чтобы извлечь нужные значения из списка объектов.

Для преобразования JSON-объекта в массив и последующей обработки данных о валюте XRPUSDT и ее цене с использованием цикла `foreach` в PHP, можно выполнить следующие действия:

1. Преобразовать JSON-объект в массив с помощью функции `json_decode`.
2. Пройти по массиву и найти элемент, соответствующий валюте XRPUSDT.
3. Вывести информацию о цене данной валюты.

Пример кода:

```php
$jsonData = '{"BTCUSDT":{"symbol":"BTCUSDT","price":"40000"},"XRPUSDT":{"symbol":"XRPUSDT","price":"1.5"},"ETHUSDT":{"symbol":"ETHUSDT","price":"2500"}}';

$data = json_decode($jsonData, true);

foreach ($data as $currency) {
    if ($currency['symbol'] == 'XRPUSDT') {
        echo 'Цена валюты XRPUSDT: ' . $currency['price'];
        break;
    }
}
```

Для улучшения предсказуемости и эффективности кода можно добавить проверку на существование элемента в массиве перед его обработкой, использовать более точные условия для фильтрации данных о валюте и уменьшить сложность алгоритма, если это возможно. Также можно реализовать кэширование данных, чтобы избежать повторного запроса информации о валюте.
<?php

$streams = [
'{"stream":"xrpusdt@bookTicker","data":{"u":10936805954,"s":"XRPUSDT","b":"0.64420000","B":"3076.00000000","a":"0.64440000","A":"6180.00000000"}}',

'{"stream":"xrpusdt@bookTicker","data":{"u":10936805954,"s":"BNBUSDT","b":"0.64420000","B":"3076.00000000","a":"0.64440000","A":"6180.00000000"}}'    
];

$result = [];
foreach($streams as $json_str) {
    $data = json_decode($json_str, true); //сама строка  json в которой ищем
    
    //var_dump($data['data']);
    
    if(in_array($data['data']['s'], [
        'XRPUSDT',
        'BNBUSDT',   
    ])) {
        $result[$data['data']['s']] = $data['data']['b'];
    }
}

print_r($result);


Array
(
    [XRPUSDT] => 0.64420000
    [BNBUSDT] => 0.64420000
)
Похожие вопросы