2017-06-28 9 views
1

PHPのページを作成して、2つの摂氏温度(開始は&の開始)と2つの間で増分する数値を入力するように促します。次に、数値をループして、各数値ベースの華氏変換を表形式の増分で表示します。私が現在持っている問題は、数値入力の下に表示できるようにテーブル表示を変数に入れようとしていますが、現時点では上にしか表示できません。私は問題は、変数がテーブルを認識していないということです。なぜなら、私がそれをエコーし​​ようとすると "1"と表示されるからです。私は引用符と括弧でテーブル全体を入れてみましたが、それでも動作していません。PHP変数テーブル

if ($start_error == "" && $stop_error == "" && $inc_error == "") { 

     $result = print "<table width=\"25%\" border =\"1\" style='border-collapse: collapse'>"; 
        print "<tr><th>Celsius</th>"; 
        print "<th>Fahrenheit</th></tr>"; 
        for ($row=1; $row <= 1; $row++) { 
         for ($c = $start; $c <= $stop; $c+=$inc) { 
         print "<tr> \n"; 
         $f = $c * 1.8 +32; 
          for ($col=1; $col <= 1; $col++) { 
           print "<td align=\"center\">$c&deg;</td> \n"; 
           print"<td align=\"center\">$f&deg;</td> \n"; 
          } 
         print "</tr>"; 
         } 
        print "</table>";  
        } 

    } 

} 

?> 

<h2><?php echo $start_error; ?></h2> 
<h2><?php echo $stop_error; ?></h2> 
<h2><?php echo $inc_error; ?></h2> 


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" > 
    Starting Temperature: <input type="text" name="start_number" value="<?php echo $start; ?>" size="5" /><br/> 
    Stop Temperature: <input type="text" name="stop_number" value="<?php echo $stop; ?>" size="5" /><br/> 
    Temperature Increment: <input type="text" name="inc_number" value="<?php echo $inc; ?>" size="5" /><br/> 
    <input type="submit" value="Create Temperature Conversion Table" /> 


</form> 

<?php echo $result; ?> 

And here is an image of what the result looks like:

+0

文書化された[print](http://php.net/print)は常に1を返します。戻り値には 'print'を使用しません。 –

+0

@RiggsFollyプリントを削除しようとしましたが、今は何も表示されません。 – Brett

+0

詳細については、私の答えを参照してください – RiggsFolly

答えて

3

すぐに出力しますprint文を削除し、$result変数

if ($start_error == "" && $stop_error == "" && $inc_error == "") { 

    $result = "<table width=\"25%\" border =\"1\" style='border-collapse: collapse'>"; 
    $result .= "<tr><th>Celsius</th>"; 
    $result .= "<th>Fahrenheit</th></tr>"; 
    for ($row=1; $row <= 1; $row++) { 
     for ($c = $start; $c <= $stop; $c+=$inc) { 
      $result .= "<tr> \n"; 
      $f = $c * 1.8 +32; 
      for ($col=1; $col <= 1; $col++) { 
       $result .= "<td align=\"center\">$c&deg;</td> \n"; 
       $result .= "<td align=\"center\">$f&deg;</td> \n"; 
      } 
      $result .= "</tr>"; 
     } 
     $result .= "</table>";  
    } 
} 
にテキスト連結と交換してください:ここで

は表が入って来たコードの一部であります

+0

これは完全に機能しました!どうもありがとうございました! – Brett

+0

あなたは大歓迎です:) – RiggsFolly

+0

^そのような素敵なマナー:-) –

0

print関数は、文字列を直接出力バッファ(br ower)、 "1"を返して完了を確認します。 $result = print [...]を設定すると、印刷を実行して(ブラウザに文字列を送信する)、戻り値( "1")を$ resultに割り当てています。

つまり、printは、変数に割り当てる文字列を返すのではなく、バッファにデータを出力します。あなたの$ result変数の唯一の値はが返され、がprintで返されます。これは "1"です。

あなたは2つのオプションがあります。@RiggsFollyが提案されているよう

1)は、printへの呼び出しを削除し、ちょうどあなたの連結文字列に$resultを設定します。

2)printをそのまま使用して、$result変数の使用を取り除くことができます。これは現在、print呼び出しの戻り値( "1")のみを格納します。