2017-11-21 6 views
0

whileループで$st['status']の値が出力されないのはなぜですか?whileループで配列の値が保存されない

2つのファイルが正常にダウンロードされています。

json_encode($st)は何も出力しません。

while (true) { 
    clearstatcache(); 

    # Get filesize 
    $fileSize = ftp_size($conn_id, $txt_filename); 

    # Check if txt (status) file exist 
    # Filesize will return -1 if no file exist 
    if($fileSize == -1) { 

     $st['status'] = 'no file'; 

     # no file 
     return true; // continue loop until file exist 

    }else{ 

     # File exist 
     # Move remote files (xml and txt) to local folder 

     # Download both txt and xml files       
     if(
      ftp_get($conn_id, $localstatusfolder.'/'.$txt_filename, $txt_filename, FTP_BINARY) && 
      ftp_get($conn_id, $localstatusfolder.'/'.$xml_filename, $xml_filename, FTP_BINARY) 
     ) { 

      # Files downloaded to local folder 
      $st['status'] = 'ok'; 

      ftp_close($conn_id); 

      return false; 

     }else{ 

      # Fejl, ftp_get 
      $st['status'] = 'FTP003'; 

      ftp_close($conn_id); 

      return false; 
     } 
    } 
} 

echo json_encode($st); 
+0

var_dump($ st)を使用した場合の出力は? ? –

+3

を使用して 'return'が問題になります。代わりに 'break'を使用してください。 –

+0

var_dump =何も出力せず。リターンをブレークに置き換えると、ページエラー500が表示されます。 –

答えて

0

あなたは

ftp_get($conn_id, $localstatusfolder.'/'.$txt_filename, $txt_filename, FTP_BINARY) && 
ftp_get($conn_id, $localstatusfolder.'/'.$xml_filename, $xml_filename, FTP_BINARY) 

は、あなたのコードからreturn false、チェックして、はい削除後、これらの行を削除してくださいと、これらの行でエラーが発生している、それはコードが後に、ここで実行されないことを意味します。この場合には、breakを使用してください。

関連する問題