質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1528閲覧

PHP・htmlのコーディングについて

n.t

総合スコア64

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/03/02 09:35

編集2017/03/02 09:48

プログラマー歴一年の新米です。

現在、別の方が書いたコードをリファクタリングする作業をしているのですが、
if文がたくさん出てくる箇所がありどう記述するのが
美しいのか悩んでおります

html

1<div class="a <?php if($a === true):?> b <?php endif: ?>">test</div> 2 <div class="c <?php if($b === true):?> d <?php endif: ?>">test</div> 3 <?php if($a === true):?> 4 <?php echo 'aaaaaaa'; ?> 5 <?php endif; ?>

元のコードになります。

if文の値がclassファイルから持ってくるので一文がすごく長くなってしまうのと
classの中にif文があるのが気持ち悪いので下記のように書いてみたところこれもifがたくさんできてしまい見づらくなってしまうのでなにかいい書き方があればご教授お願いいたします

html

1<?php if($a === true): ?> 2 <div class="a b">test</div> 3<?php else: ?> 4 <div class="a">test</div> 5<?php endif; ?> 6 7<?php if($b === true): ?> 8 <div class="c d">test</div> 9<?php else: ?> 10 <div class="c">test</div> 11<?php endif; ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dddd_gond

2017/03/02 09:38

条件式のところに代入してますけど、これはタイプミスですかね。
kei344

2017/03/02 09:38

PHPで処理することが決まっているなら、質問タグに「PHP」を追加してください。
n.t

2017/03/02 09:41

申し訳ありませんでした。修正いたしました。
dddd_gond

2017/03/02 09:46

コロンとセミコロンの対応があってないみたいですけど。それと、else()とかはエラーになるんじゃないですか?
guest

回答2

0

true/falseの2パターンぐらいだったら、配列で直に書いてもそんなに圧迫感ない気がします。

php

1<?php 2 3$a = true; 4$b = false; 5 6?> 7 8<div class="<?= ['a', 'a b'][$a] ?>">test</div> 9<div class="<?= ['c', 'c d'][$b] ?>">test</div>

html

1<div class="a b">test</div> 2<div class="c">test</div>

PHP: 配列 - Manual
http://php.net/manual/ja/language.types.array.php

bool も integer にキャストされます。つまり、 キーに true を指定すると実際には 1 に格納され、 同様にキーを false とすると実際には 0 となります。

PHP 5.4.x から PHP 5.5.x への移行
http://php.net/manual/ja/migration55.new-features.php

Array と string をデリファレンスして、 個々の要素や文字に直接アクセスできるようになりました。

投稿2017/03/02 10:26

nnssn

総合スコア1221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/02 11:53

横からすみません。これってよく使われる手法なんでしょうか? 少し長めのコードの中にあったら、「ん?」ってなりそうな気がして、ちょっと使用される頻度が気になりました。 よく使われる手法なら、頭にねじ込んでおこうかなぁと^^;
nnssn

2017/03/02 13:25 編集

見かけたのも使ったのも2,3度といった感じです。あまり使われてはいないと思います。質問文のコードを見て、分岐させるのはいや、コントローラでクラス名用意するのもいやと考えてたらふいに思い出しました。
退会済みユーザー

退会済みユーザー

2017/03/02 14:19

ありがとうございます。 勉強になりました。
guest

0

ベストアンサー

php側で吐き出す文字列を絞り込み、三項演算子ですっきりさせれば、

php

1<div class="<?php echo $a?'a b':'a'; ?>">test</div> 2<dif class="<?php echo $b?'c d':'c'; ?>">test</div>

のような形になります。

投稿2017/03/02 09:51

編集2017/03/02 11:20
seastar3

総合スコア2285

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

n.t

2017/03/02 10:43

ありがとうございます。すっきり書くことができました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問