PHPに比較演算子を入れる方法 - PHPプロ!Q&A掲示板

4969

  • 0P

PHPに比較演算子を入れる方法

質問日時 / 2018年8月15日 15:32    回答数 / 1件

Questioner:  memenaginagi  このエントリーをはてなブックマークに追加 

キーワード / php    sprintf   

いつもこちらでお世話になっています。
前回7月にこちらに投稿させていただきアドバイスをいただいたのですが、phpの中に比較演算子をどうやって記述していいのかわからないので改めて投稿させていただきました。

PHPの「$kekka」に"○"か"△"か"×"を表示させるようにしたいのですが、どのように比較演算子を記述していいのやら困っています。
演算部分18行目、結果表示29行目
(もしかしたら、他の関数があるのかもしれませんがわかりません。)
引き続きご教示願えればと思います。



  1. <?php
  2. $trhtml = <<<eot
  3. <tr>
  4. <th class="th"><div id="sent14_stl">%s</div></th>
  5. <th class="th"><div id="sent14_stl">%s</div></th>
  6. <th class="th" align="right"><div id="sent14"_stl>%s</div></th>
  7. <th class="th"><div id="sent14_stl">%d</div></th>
  8. <th class="th"><div id="sent14_stl">%s</div></th>
  9. <th class="th"><div id="sent14_stl">%s</div></th>
  10. </tr>
  11. eot;
  12. foreach($rows as $row){
  13. $show_qty = "なし";
  14. $kekka = "";
  15. foreach($pnk as $key=>$val){
  16. if($val !== $row['partsnumber']){continue;}
  17. $show_qty = sprintf('%d',$qty[$key]);
  18. $kekka = sprintf('',$row['stockqty'] > ($qty[$key]+10));
  19.  
  20. break;  
  21.  
  22. }
  23. printf($trhtml,
  24. htmlspecialchars($row['partsnumber'],ENT_QUOTES),
  25. htmlspecialchars($row['description'],ENT_QUOTES),
  26. number_format($row['unitprice']),
  27. $row['stockqty'],
  28. $show_qty,
  29. $kekka);
  30. }
  31. ?>


比較演算子
1)sprintf('○',$row['stockqty'] > ($qty[$key]+10))
$qty+10よりも'stockqty'のほうが多ければ'○'

2)sprintf('×',$row['stockqty'] < ($qty[$key]+10))
$qty+10よりも'stockqty'のほうが少なければ'×'

3)上記以外($qty+1~9)場合は'△'

というように、stockqtyとqtyとを比較して、その結果によって'○'か'×'か'△'を表示させるようにしたいのです。

ちなみに、今php文内に記述してある数式では、多かろうが少なかろうが結果がすべて'○'になります。

すみませんが、ご教示いただければ助かります。
宜しくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix>$qty+10よりも'stockqty'のほうが多ければ'○' >$qty

回答一覧

並び替え:

A01
answerershimix [8月17日 14:43]

>$qty+10よりも'stockqty'のほうが多ければ'○'
>$qty+10よりも'stockqty'のほうが少なければ'×'

ここまでは理解できますが

>上記以外($qty+1~9)場合は'△'

これはどういう意味でしょうか?

たとえば、$qty が 10 だったら、stockqty が 21以上なら〇、19以下なら×、20なら△ とするのが正解なんじゃないですかね。

$cmp = $qty[$key] + 10;
$kekka = '△';
if ($row['stockqty'] > $cmp) { $kekka = '〇'; }
if ($row['stockqty'] < $cmp) { $kekka = '×'; }

三項演算子で書くならば

$cmp = $qty[$key] + 10;
$kekka = $row['stockqty'] > $cmp ? '〇' : ($row['stockqty'] < $cmp ? '×' : '△');

ですかね(こちらはあとで読み取りにくくなるのでお勧めしません。入れ子になりますしね)。



検証したソース
  1. <?php
  2. $cmp = 20;
  3. $row['stockqty'] = 19;
  4. $kekka = '';
  5. if ($row['stockqty'] > $cmp) { $kekka = ''}
  6. if ($row['stockqty'] < $cmp) { $kekka = '×'}
  7. echo $kekka . "<br>";
  8. $kekka = $row['stockqty'] > $cmp ? '' : ($row['stockqty'] < $cmp ? '×' : '');
  9. echo $kekka . "<hr>";
  10.  
  11. $row['stockqty'] = 20;
  12. $kekka = '';
  13. if ($row['stockqty'] > $cmp) { $kekka = ''}
  14. if ($row['stockqty'] < $cmp) { $kekka = '×'}
  15. echo $kekka . "<br>";
  16. $kekka = $row['stockqty'] > $cmp ? '' : ($row['stockqty'] < $cmp ? '×' : '');
  17. echo $kekka . "<hr>";
  18.  
  19. $row['stockqty'] = 21;
  20. $kekka = '';
  21. if ($row['stockqty'] > $cmp) { $kekka = ''}
  22. if ($row['stockqty'] < $cmp) { $kekka = '×'}
  23. echo $kekka . "<br>";
  24. $kekka = $row['stockqty'] > $cmp ? '' : ($row['stockqty'] < $cmp ? '×' : '');
  25. echo $kekka . "<hr>";

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)

Q&A掲示板 新着情報