@Gera11

Как создать условие сравнения в php при выводе данных по api?

Выдергиваю данные по api и получаю их в таком формате:
Array
(
    [name] => Bamboo Relay
    [tickers] => Array
        (
            [0] => Array
                (
                    [base] => DAI
                    [target] => USDC
                    [last] => 1.002536321
                    [volume] => 12498.278493792
                )
            [1] => Array
                (
                    [base] => WETH
                    [target] => DAI
                    [market] => Array
                    [volume] => 882.06928994636
                )
            [2] => Array
                (
                    [base] => USDC
                    [target] => WETH
                    [market] => Array
                    [volume] => 882.06928994636
                )

И вывожу эти данные на страницу следующим образом:
<?php
if( ! defined( 'DATALIFEENGINE' ) ) {
	die( "Hacking attempt!" );
}
$curl = curl_init();
curl_setopt_array($curl, array(
	CURLOPT_URL => "https://coingecko.p.rapidapi.com/exchanges/bamboo_relay/tickers",
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_FOLLOWLOCATION => true,
	CURLOPT_ENCODING => "",
	CURLOPT_MAXREDIRS => 10,
	CURLOPT_TIMEOUT => 30,
	CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	CURLOPT_CUSTOMREQUEST => "GET",
	CURLOPT_HTTPHEADER => array(
		"x-rapidapi-host: coingecko.p.rapidapi.com",
		"x-rapidapi-key: 6ffd1d2182msh846abeb6f107c2cp15e4c8jsn66196e744cac"
	),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
function print_arr($arr){
	echo '<pre> ' . print_r($arr, true) . ' </pre>';
}
$infa = json_decode($response, true);

//zrx/weth para
$basezrx = $infa['tickers'][7]['base'];
$targetweth = $infa['tickers'][7]['target'];
$zwprice = $infa['tickers'][7]['converted_last']['usd'];
$zwspread = $infa['tickers'][7]['bid_ask_spread_percentage'];
$zwvolume = $infa['tickers'][7]['converted_volume']['usd'];

$infatxt="
<ul>
	<li>$basezrx/$targetweth - price: $zwprice - spread: $zwspread volume: $zwvolume</li>
</ul>
";
echo $infatxt;
print_arr($infa);
?>


Но проблема! В api, нужные мне данные меняются через каждые 5-10 минут. А именно: Нужная пара к примеру USDC/WETH перемещается с [2] на [3] или наоборот попадает в списке выше.

Как правильно создать условие через foreach так, чтобы сначала проверять
Если
[base] равен USDC
и
[target] равен WETH
то данные подтягиваются.
Просто api, постоянно меняет нужную мне инфу в столбцах [1] или [2] и т.д. Нужно сделать чтобы перед выводом инфы, скрипт проверял, то ли он выводит.
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
Kasperenysh
@Kasperenysh
Рецидив в особо острой форме))
....
$infa = json_decode($response, true);
$search;

foreach ($infa['tickers'] as $val) {
    if ($val['base'] == 'USDC' && $val['target'] == 'WETH') {
        $search = $val;
        break;
    }
}

$basezrx = $search['base'];

.....
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@JohnDidact
Нуб во всём
foreach($infa['tickers'] as $ticker){
 if($ticker['base'] === 'USDC' and $ticker['target'] === 'WETH'){
  $info_txt = 'bla bla '. $ticker['your_key'] .' bla bla'; // строка с твоим текстом, массив ticker имеет ключи, которые есть в $infa['tickers'][n], где n - индекс...
  break;
 }
}


Пишу со Смарта, много писать, тем более код, сложновато))) в твоём коде, да и в моём, многое стоит переписать, думаю)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
04 апр. 2020, в 21:01
35000 руб./за проект
04 апр. 2020, в 20:32
5000 руб./за проект
04 апр. 2020, в 20:30
25000 руб./за проект