Я пытаюсь создать массив xml-файлов. Каждый запрос на получение дает мне 100 продуктов, и мне нужно получить около 800 продуктов.Изменить запрос GET Переменная внутри цикла
Поэтому я попытался построить цикл на основе переменной ts_d, которую вы можете использовать для получения следующей страницы xml.
public function getXml($division, $topic, $tsp)
{
$array = array();
$i = 0;
$x = 1;
while ($x = 1) {
$headers = ['Authorization' => 'Bearer '.$this->getAccessToken()];
$client = new Client([
'base_uri' => 'https://start.exactonline.nl/docs/',
]);
try {
$response = $client->request('GET', 'XMLDownload.aspx', [
'query' => ['Topic' => $topic, '_Division_' => $division, 'TSPaging' => $tsp],
'headers' => $headers,
]);
$string = new \SimpleXMLElement((string) $response->getBody());
$tspaging = $string->Topics->Topic->attributes()->{'ts_d'};
$array[$i]=$string;
echo $tspaging . ' ' . $tsp;
}
catch (\Exception $e) {}
if (!isset($tspaging)) {
$x = 0;
}
$i++;
$tsp = $tspaging
unset($string);
}
return $array;
}
Я называю эту функцию:
$stockPositions = $connection->getXml(1310477, 'StockPositions', '');
Но в то время как цикл бесконечен и эхо возвращается:
0x000000000F5753AB 0x000000000F5753AB 0x000000000F5753AB0x000000000F5753AB 0x000000000F5753AB0x000000000F5753AB 0x000000000F5753AB0x000000000F5753AB 0x000000000F5753AB0x000000000F5753AB
Можете ли вы, ребята, помочь встретились выйти из этого бесконечного цикла?
'while ($ x = 1)'? разве вы не подразумеваете '=='? также, кажется, что '$ x' должно быть логическим' true'/'false', поскольку вы его используете ... – Random
изменил цикл while на ($ x), $ x = 1 на true и оператор if на false но результат тот же. – Lex
Вам нужно проверить переменную tspaging и проверить, действительно ли это происходит внутри блока Exception Catch, где вы завершаете скрипт? –