2017-02-10 10 views
0

Я пытаюсь создать массив 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 

Можете ли вы, ребята, помочь встретились выйти из этого бесконечного цикла?

+1

'while ($ x = 1)'? разве вы не подразумеваете '=='? также, кажется, что '$ x' должно быть логическим' true'/'false', поскольку вы его используете ... – Random

+0

изменил цикл while на ($ x), $ x = 1 на true и оператор if на false но результат тот же. – Lex

+0

Вам нужно проверить переменную tspaging и проверить, действительно ли это происходит внутри блока Exception Catch, где вы завершаете скрипт? –

ответ

0

Проблема заключалась в том, что $ tspaging возвращал строку simpleXmlObject вместо обычной строки. Раствор добавлял strval к ​​этому элементу:

$tspaging = strval($string->Topics->Topic->attributes()->{'ts_d'});