• ベストアンサー

phpのプログラムについて

<?php $n = trim(fgets(STDIN)) * 60; $m = trim(fgets(STDIN)); for ($i = 1; $i <= $m; $i ++) { $n -= trim(fgets(STDIN)); $o = $n >= 0 ? $i : $o; } echo $n >= 0 ? 'OK' : $o; ?> というコードの $o = $n >= 0 ? $i : $o; の部分の意味がわかりません。 ?の意味と:の意味教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

連投すいません。 $o = $n >= 0 ? $i : $o; if ($n >= 0 ){  $o = $i; }else{  $o = $0; } と同義です。

その他の回答 (2)

回答No.2

PHPにかぎらず使われると思います。 三項演算子といいます。

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

もし、$n >= 0だったら、$oに$i を入れ、違ったら$oを入れるという意味です。

関連するQ&A

  • PHP whileの意味を知りたい

    お世話になります。 $input=trim(fgets(STDIN)); while($input){ $array[]=$input; $input=trim(fgets(STDIN)); } 上記の意味を教えてください。 while (条件式) 実行する処理; 例 $num = 0; while (num < 2){ print "num=".$num; } 今まではこういった式を学んでいました。 while($input)の$inputという条件式?? $input=trim(fgets(STDIN));の意味も飲み込めないです。 解説を宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpのプログラムで

    下記ソースコードのように、forループで回る度にループの中のnameを変更することはできますか? できるのであれば、お手数ですが方法もお願いします。 for($i = 0; $i <= 6; $i++){ echo"$i"; ?> <dd> <input name="responce" type="text" id="responce" /> </dd> <?php } ?>

    • ベストアンサー
    • PHP
  • PHPのwhileの理解の仕方教えてください。

    初めまして。つい最近PHPを勉強しようと始めました。 初歩の初歩でまったくの知識がなく、参考書を何度も読んでいますが、 理解の仕方が分かりません。 下記のwhileの例文にについてお教えください。 <?php echo "整数を入力:"; $a = trim(fgets(STDIN)); $result = false; $n = 2; while($n <= $a/2){ if($a % $n == 0){ $result = true; } $n++; } if($result){ echo $a . "は、素数じゃないです。"; } else { echo $a . "は、素数です。!!"; } ?> 例文の中の$result = false; や$result = true;が 参考書には説明していなく、 どのようにwhileの構文では解釈すればよいのか お教えください。(あってもなくてもよいのか?) この$result = false;がなくてもPHPで動作はできるのは確認済みなのですが、 どうしてもこの部分が気になり、理解をしようと別の参考書のwhileの部分を読みましたが、 全く理解できませんでした。 この程度の知識で無謀だというのは十分承知しておりますが、 今後も同様な事(何が書いてあるか分からない)が起きると思いますので、 何か良いアドバイスをお願い致します。

  • phpでこの"\n"はどういう意味ですか?

    phpでこの"\n"はどういう意味ですか? <?php for($i = 0; $i <= 4; $i++){ echo $i."\n"; }

    • ベストアンサー
    • PHP
  • PHPでカレンダーを作成する際の計算がわかりません

    PHPを勉強し始めた初心者です。 参考書を片手にカレンダーを作成しているのですが、 その参考書に記載されている計算の意味がわかりません。 ///////以下抜粋 <?php //年月日を取得する if ($_SERVER['REQUEST_METHOD'] = "POST") { $yyyy = $_POST["yyyy"]; $mm = $_POST["mm"]; } else { $yyyy = date("Y"); $mm = date("m"); } //年月選択リストを表示する echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "\">"; echo "<table><tr><td>"; //年 echo "<select name=\"yyyy\">"; for ($i = 2000; $i <= 2020; $i++) { echo "<option"; if ($i == $yyyy) { echo " selected "; } echo ">$i"; } echo "</select>年"; //月 echo "<select name=\"mm\">"; for ($i = 1; $i <= 12; $i++) { echo "<option"; if ($i == $mm) { echo " selected "; } echo ">$i"; } echo "</select>月"; echo "</td>"; echo "<td><input type=\"submit\" value=\"表示\" name=\"sub1\"></td>"; echo "</tr></table></form>"; //カレンダーを表示する echo"<table border=\"1\">\n <tr>\n <td>日</td>\n <td>月</td>\n <td>火</td>\n <td>水</td>\n <td>木</td>\n <td>金</td>\n <td>土</td> </tr>"; //1日の曜日を取得する $wd1 = date("w", mktime(0,0,0,$mm,1,$yyyy)); $d = 0; $lastd = date("d", mktime(0,0,0,$mm + 1, 0, $yyyy)); for ($i = 0; $i <= 5; $i++) { if ($d >= $lastd) {break;} echo "<tr>"; for ($j = 0; $j <= 6; $j++) { $d = $i * 7 + $j - $wd1 + 1; if ($d > $lastd or $d < 1) { echo "<td> </td>"; } else { echo "<td>$d</td>"; } } echo "</tr>"; } echo "</table>"; ?> /////////////////// 上記のソースの for ($i = 0; $i <= 5; $i++) { if ($d >= $lastd) {break;} echo "<tr>"; for ($j = 0; $j <= 6; $j++) { $d = $i * 7 + $j - $wd1 + 1; if ($d > $lastd or $d < 1) { echo "<td> </td>"; } else { echo "<td>$d</td>"; } } echo "</tr>"; } この部分で、なぜ5なのかとかなぜこういう計算式なのかとかがわかりません。 どなたかこのソースの意味をご教授願いませんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpでbreakについておしえてください <?

    phpでbreakについておしえてください <?php for($i = 0;$i<=4; $i++){ if($i ==3){ break; } echo $i."/n"; } この部分if($i ==3) $iが3になったらですが $iは3つもありますよね? ($i = 0;$i<=4; $i++) なぜ最初の($i = 0 だけを指すんでしょうか?

    • ベストアンサー
    • PHP
  • このプログラムを解読してください。

    これは、楕円の内部と外部に色を塗るプログラムです。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define MS 200 main() { char fi[50]; int i,j; double x0,y0,a,b; FILE *fp; unsigned short header[13]={0x4d42,54490,1,0,0,26,0,12,0,MS,MS,1,24}; unsigned char bmp[MS][MS][3]; for(i=0;i<=MS-1;i++) { for(j=0;j<=MS-1;j++) { bmp[i][j][0]=0; bmp[i][j][1]=255; bmp[i][j][2]=0; } } printf("中心のx座標:"); fgets(fi,50,stdin); x0=atof(fi); printf("中心のy座標:"); fgets(fi,50,stdin); y0=atof(fi); printf("短径:"); fgets(fi,50,stdin); a=atof(fi); printf("長径:"); fgets(fi,50,stdin); b=atof(fi); for(i=0;i<=MS-1;i++) { for(j=0;j<=MS-1;j++) { if((pow(j-x0,2.0)/pow(a,2.0))+(pow(i-y0,2.0)/pow(b,2.0))<=1) { bmp[i][j][0]=0; bmp[i][j][1]=0; bmp[i][j][2]=255; } } } printf("Input file name:"); fgets(fi,50,stdin); fi[strlen(fi)-1]='\0'; if((fp=fopen(fi,"wb"))==NULL) { fprintf(stderr,"Error: file open [%s].\n",fi); exit(1); } fwrite(header,2,13,fp); fwrite(bmp,1,MS*MS*3,fp); fclose(fp); }

  • PHPwhileによるエラーの原因

    お世話になります。 PHPの勉強を始めたばかりの初心者です。 入力される値 2 8 出力値 2 3 4 5 6 7 8 と表示するように以下のプログラムを作成しました。 <?php $input=fgets(STDIN); $input2=fgets(STDIN); $i = $input; $a = $input2; while ($i<=$a){ echo $i."\n"; $i++; } ?> 結果「Runtime error(Exit status:null)」とエラーメッセージが出ます。 $i = $input; $a = $input2; を $i = 2; $a = 8; にするとうまく表示できます。 変数に代入する変数はこれで合ってますでしょうか? どこか、間違っているか、教えてくださいますか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 九九表

    PHPで九九の表を作っているのですが、 どうしてもここまでしか出来ませんでした。 <tr>,<td>を消してみると 数字が横に一列に表示されており、かけ算にはなっているのですが、 表にはどうしてもなりません。 なにかが違うのは分かっているのですが、ないが違うのか分かりません。 誰かお分かりになるかたがいましたらお伺いできませんでしょうか。 <?php echo '<table>'; echo '<tr>'; for ($i = 1; $i <= 9; $i++ ) { for ($j = 1; $j <= 9; $j++ ) echo '<td>' $i * $j'</td>'; echo '</tr>'; } echo '</table>'; ?>

    • ベストアンサー
    • PHP
  • phpでこれはどういう仕組になっているんでしょうか

    phpでこれはどういう仕組になっているんでしょうか? echo $sumは 2+0 4+0 6+0 8+0 10+0で30ということですか? <?php $arr = [2,4,6,8,10]; $sum = 0; for($i = 0; $i <= 4; $i++){ $sum += $arr[$i]; } echo $sum."\n";

    • ベストアンサー
    • PHP

専門家に質問してみよう