• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:if分のネストについて)

if文のネストについて

このQ&Aのポイント
  • PHPとMySQLでデータサイトを作成中です。if文のネストに関して質問があります。
  • データベースに保存された血液型データを表示する際に、「型」という文字を付けたくありません。$row['blood_type']が空だった場合には、「型」を付けずに表示したいです。
  • ネストにしてみましたが、何度やってもsyntax errorになってしまいます。エラーを出さずに解決する方法を知っている方、ご教示いただけないでしょうか?

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

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

空だったときに何をしたいんですか? このprint()文の情報はでていいのでしょうか? 仮に出るとすると、<a>要素が空の文字で出ることになりますが、いいのでしょうか? > print( $_GET["dis"][2] == "blood" ) ? '<td><a href="http://○○.com/">'.$row['blood_type'] . > '型</a></td>' : '' ; 三項演算子使ってるし、$row['bood_type']についても三項演算子使えば済むのでは。 print( $_GET["dis"][2] == "blood" ) ? '<td><a href="http://○○.com/">'. ($row['blood_type'] == '' ? $row['blood_type'] . '型' : '') . '</a></td>' : ''; こんな風にごちゃごちゃなるくらいなら、1つ1つロジックで処理した方がいいと思いますが。 if ($_GET["dis"]["2] != "blood") {  return; } $htmlTag = '<td><a href="http://○○.com/">%s</a></td>'; echo sprintf($htmlTag, ($row['blood_type'] != '' ? $row['blood_type'] . '型' : '')); みたいな。

m6533753774
質問者

お礼

naktakさん 回答ありがとうございます。 >print( $_GET["dis"][2] == "blood" ) ? '<td><a href="http://○○.com/">'. ($row['blood_type'] == '' ? $row['blood_type'] . '型' : '') . '</a></td>' : ''; ご教示頂いたコードで無事できました。 <a>タグの中は空で出したかったので助かりました。 とても勉強になりました。 ありがとうございました。

その他の回答 (1)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

print ($_GET["dis"][2] == "blood" ) ? '<td><a href="http://○○.com/">' . $row['blood_type'] . '型</a></td>' : '' ; 三項演算子がすでにあるので、三項演算子を重ねるのは避けたいですねぇ。三項演算子を重ねると、あとで他人が読み取るのに苦労します(数日後の自分も「他人」です)。 #マニュアルでも「重ねないこと」を推奨しています<三項演算子 それほど三項演算子で有利になる(読みやすくなる)とも思えないので、素直に if で括ってください。 ・ $_GET["dis"][2] が "blood" だったらtd要素を出力する ・ $row['blood_type']が空白でなかったらanchor要素を出力する ・ $row['blood_type']が空白だったら何も出力しない という条件なら if ($_GET["dis"][2] === 'blood' ) { print '<td>'; if ($row['blood_type'] !== '') { print '<a href="http://○○.com/">' . $row['blood_type']. '型</a>'; } print '</td>'; } だと思います。空のtd要素の見映えが気になるなら if ($_GET["dis"][2] === 'blood' ) { print '<td>'; if ($row['blood_type'] !== '') { print '<a href="http://○○.com/">' . $row['blood_type']. '型</a>'; } else { print '&nbsp;'; } print '</td>'; } でもいいです。

m6533753774
質問者

お礼

agunuzさん 回答ありがとうございます。 三項演算子のネストは非推奨だったんですか。 たしかに記述した自分でも分かりづらいですね。 ご教示頂いたコードで再度試してみます。 ありがとうございました。

関連するQ&A