2017-02-10 176 views
0

我想構建一個xml文件的數組。 每個獲得請求給我100個產品,我需要800左右的產品。更改GET請求變量while循環

所以我試着建立一個基於變量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', ''); 

但是這個while循環是無限的,回波返回值:

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'});