2016-02-29 31 views
0

我有一個運行在一個客戶倉庫兩家供應商的最短路徑計算的程序:Inexplicible回聲功能格式化

$_fp = fopen("php://stdin", "r"); 
$tcase = fgets($_fp); 

for ($a0 = 0; $a0 < $tcase; $a0++) 
{    
    $count = fgets($_fp); 
    $array = explode(' ', fgets($_fp)); 
    $max_ending_here = 0; 
    $max_so_far = 0; 
    $all_positives = 0; 

    for($i=0; $i < count($array); $i++) 
    { 

     $x = $array[$i]; 
     $max_ending_here = max(0, $max_ending_here + $x); 
     $max_so_far = max($max_so_far, $max_ending_here); 


     if ($array[$i] >= 0) { 
      $all_positives = $all_positives + $array[$i]; 
     } 
    } 

    if ($max_so_far > 0) { 
     echo $max_so_far . ' ' . $all_positives . "\n"; 
    } else { 
     echo $array[0] . ' ' . $array[0] . "\n"; 
    } 
} 
?> 

當我在標準輸入的地方,我得到意想不到的格式錯誤的輸出,其中兩個負數不會保持在同一行上。這發生在最後的else {echo $array[0] . ' ' . $array[0] . "\n";}。我已經試過所有的一切我能想到的,我仍然得到的東西看起來像:

1 1 
-1 -1 
1 1 
6 6 
-10 
-10 

5 6 

是兩個-10s的問題,是有某種聞所未聞需要限行的要增加多少?

+0

沒有您的CSS信息它將很難確定問題是什麼......只要您顯示的結果在HTML中,當然... – webeno

+0

這不是這是CLI輸出 – Oliver

回答

1

它看起來像有一個換行符( \n)在$array[0]的字符串末尾。

當應該打印-10時,$array[0]中有-10\n

請嘗試用

$array = explode(' ', fgets($_fp)); 
$array = array_map('trim', $array); 

更換

$array = explode(' ', fgets($_fp)); 

刪除空格,換行等在你的字符串。

1

除非達到EOF fgets返回一個包含換行符的字符串。我懷疑這是你的問題,因爲你從來沒有把它轉換爲整數,也沒有去掉換行符。以下任一應解決的是對你:

  1. 變化$array[0] . ' ' . $array[0] . "\n"
    ((int) $array[0]) . ' ' . $array[0] . "\n"

  2. 變化$array = explode(' ', fgets($_fp));
    $array = explode(' ', trim(fgets($_fp)));