2017-02-10 3 views
0

xmlファイルの配列を作成しようとしています。 1回のリクエストで100本の製品が得られ、800本の製品を購入する必要があります。GET要求を変更するループ中の変数

私はxmlの次のページを取得するために使用できる変数ts_dに基づいてループを構築しようとしました。

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文字列を返すことでした。その解決策は、その要素にストラットを追加することでした:

$tspaging = strval($string->Topics->Topic->attributes()->{'ts_d'}); 
関連する問題