Раз обязательным условием является то, что значение
symbol должно содержаться в обоих массивах, то я бы вынес в новый массив
$temp данные с массива
$json1, где ключ -
symbol, а значение -
price.
Потом проверить в цикле , есть ли такой ключ в массиве
$temp и удовлетворяет ли условию
"больше не менее, чем на 0.1%" его значение. Если да, то записываю в новый массив
$result.
Далее просто вывод ключа с наибольшим значением.
<?php
$response1 = '[{"symbol":"IOTXUSDT","price":"0.02014","time":1671464538403},{"symbol":"AUCTIONBUSD","price":"4.9500000","time":1671094714487}]';
$response2 = '[{"symbol":"IOTXUSDT","price":"0.02015","time":1671464538403},{"symbol":"AUCTIONBUSD","price":"5.9500000","time":1671094714487},{"symbol":"LUNA2BUSD","price":"1.5209000","time":1671464538148},{"symbol":"1000SHIBBUSD","price":"0.0089910","time":1671464538549}]';
$json1 = json_decode($response1, true);
$json2 = json_decode($response2, true);
$temp = $result = array();
foreach ($json1 as $k) {
$temp[$k['symbol']] = $k['price'];
}
foreach ($json2 as $v) {
if (array_key_exists($v['symbol'], $temp)) {
if ($v['price'] >= ($temp[$v['symbol']] + $temp[$v['symbol']]/1000)) {
$result[$v['symbol']] = $v['price'];
}
}
}
echo array_search(max($result), $result);