Всем привет. Нужна помощь. Кто поможет решить скину на карточку на кофе. Итак, гружу данные с одной букмекерской конторы, через RollingCurl, это такая старенькая и простая библиотека, которая позволяет сделать за раз очень много запросов к сайту и не уйти в блек лист за мини ддос. Вот код моего скрипта: PHP: <?php // Модуль получения данных с xstavka require __DIR__ . '/lib/RollingCurl.php'; require __DIR__ . '/lib/Request.php'; // Получаем список всех матчей лайва $ch = curl_init("https://1xstavka.ru/LiveFeed/Get1x2_VZip?count=1000&mode=4&top=true&partner=5"); $fp = fopen('data/xstavka_list.json', "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); if(curl_error($ch)) { fwrite($fp, curl_error($ch)); } curl_close($ch); fclose($fp); // Получаем данные по каждому матчу $json = file_get_contents('data/xstavka_list.json'); $ids = json_decode($json, true); $rc = new \RollingCurl\RollingCurl(); $rc->window_size = 20; // Количество одновременных соединений foreach ($ids['Value'] as $value) { $rc->get('https://1xstavka.ru/LiveFeed/GetGameZip?id='.$value['I']); // Формируем очередь запросов } $result = array(); $rc->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) { $t = json_decode($request->getResponseText()); foreach($t as $key=>$value) { $new[$key]['ID'] = $value->I; } print_r($t); }); $rc->execute(); // Запускаем Задача такая: 1. Получить данные в массивах JSON 2. Разобрать каждый и сделать свой массив, вида: Array [0] => Array .....ID .....Name и т.д. Array [1] => Array .....ID .....Name и т.д. и т.д. Для меня это кажется просто. Но, я столкнулся одной неприятной проблемой. Для вывода данных используется объект, setCallback, и это кажется, цикл. Например, я получаю 10 JSON массивов и на экране в print_r($t) я увижу 10 массивов. Выведенных не разом, а циклом. Причем, я вижу их каждый раз новым массивом. Я имею ввиду, не построчно с номерами ключей, а вот так: Array ( ) Array ( ) Вопрос, как соединить массивы воедино и обработать результаты? Array_merge, array_values, array_columns - не работают, либо я их неправильно применил. Не знаю. Но я пробовал уже всё. Проблема в том, на мой взгляд, что я пытаюсь их получить из внешней функции. Заранее спасибо за помощь.
гадание на кофейной гуще.... какого характера у вас там массивы приходят? что выдает print_r($t) ? конкретно
Здравствуйте, гадать ничего не нужно. Можно открыть ссылку было бы и глянуть что я вытягивал по этому адресу https://1xstavka.ru/LiveFeed/Get1x2_VZip?count=1000&mode=4&top=true&partner=5 Уже решили проблему. Спасибо за внимание. PHP: $result = []; //забудьте про array(), это очень старая фигня $rc->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) use (&$result) { $t = json_decode($request->getResponseText()); $new = []; //не забудьте объявить $new foreach($t as $key=>$value) { $new[$key]['ID'] = $value->I; } $result[] = $new; //в массив $result мы добавляем массив $new //print_r($t); return $result; }); $rc->execute(); // Запускаем print_r($result);