Для начала, вам потребуется две функции для извлечения данных о ценах из двух разных API. Предполагаем, что данные приходят в виде строки, как в вашем примере. Мы будем использовать эти строки и преобразуем их в ассоциативные массивы для удобного сравнения.
Вот пример функции, которая сравнивает цены по валютным парам из двух API:
```php
function parseApiData($data) {
$lines = explode("\n", trim($data)); // Предполагаем, что строки разделены переводом строки
$prices = [];
foreach ($lines as $line) {
if (preg_match('/^(.*?) \| ([\d.]+)$/', $line, $matches)) {
$pair = trim($matches[1]);
$price = (float)trim($matches[2]);
$prices[$pair] = $price;
}
}
return $prices;
}
function comparePrices($apiData1, $apiData2) {
$prices1 = parseApiData($apiData1);
$prices2 = parseApiData($apiData2);
$differences = [];
foreach ($prices1 as $pair => $price1) {
if (isset($prices2[$pair])) {
$price2 = $prices2[$pair];
if ($price1 !== $price2) {
$differences[] = [
'pair' => $pair,
'price_api1' => $price1,
'price_api2' => $price2,
];
}
}
}
return $differences;
}
// Пример данных из двух API
$apiData1 = "BTC/USDT | 136.030\nETC/USDT | 3.030\nDOGE/USDT | 0.035";
$apiData2 = "BTC/USDT | 136.050\nETC/USDT | 3.030\nDOGE/USDT | 0.036";
// Сравниваем данные
$differences = comparePrices($apiData1, $apiData2);
// Выводим различия
if (!empty($differences)) {
foreach ($differences as $difference) {
echo "Разница для валютной пары {$difference['pair']}:\n";
echo "Цена из API 1: {$difference['price_api1']}\n";
echo "Цена из API 2: {$difference['price_api2']}\n\n";
}
} else {
echo "Цены совпадают для всех валютных пар.";
}
```
### Объяснение функции:
1. **parseApiData** — эта функция принимает строку данных и разбивает её на отдельные строки, проверяя каждую строку на соответствие ожидаемому формату. В случае совпадения, пара и цена добавляются в ассоциативный массив `$prices`, где ключом является название валютной пары, а значением — цена.
2. **comparePrices** — эта функция принимает две строки с данными из API, вызывает `parseApiData` для каждой из них, а затем сравнивает полученные массивы. Если цены не совпадают, информация о различиях добавляется в массив `$differences`.
3. После сравнения выводится информация о парах, для которых цены различаются, или сообщение о том, что все цены совпадают.
Вы можете использовать эту структуру и адаптировать её под свои нужды, например, добавив дополнительные проверки и логику обработки ошибок.