$buffer = "";
foreach($data as $key => $value){
$class = $value[0]['class'];
$classbool = !empty($class);
$buffer .= ',,'.$key.' 数: '.$value[0]['length'].' クラス: ';
$buffer .= $classbool ? $class.',,<a href="' : 'なし,,<a href="';
この後$bufferに連結でURLなどが続く~~~~~~~~~~~~~~
前後は省略していますがこういう式があります。コンマ文字は出力する際に改行に使っていますので気にしないでください。
この$bufferに連結代入している最後の二行部分を三項演算子を使って
$buffer .= ',,'.$key.' 数: '.$value[0]['length'].' クラス: '. $cachebool ? $class.',,<a href="' : 'なし,,<a href="';
こう1行でやるとエラーは出ませんが結果がおかしくなります。
上記の二行に分けたものなら結果はちゃんと
数: 5 クラス: なし
<a href="http://~~~
や、
数: 23 クラス: test
<a href="http://~~~
と出力されますが、1行バージョンだと「~<a href="」までが抜け落ちていきなり
http://~と出力されます。
最後の一行にした $buffer .= ~ の部分が全くなかったことにされているような感じです。
どうしてこうなるんでしょうか?
また、一行にした場合と二行に分けた場合どっちが速いんでしょうか?
どなたかご教授宜しく願います。
No.3ベストアンサー
- 回答日時:
三項演算子は優先順位が低いので、他の演算と合わせるときは括弧で括っておくのが無難です。
RTFM.
http://www.php.net/manual/ja/language.operators. …
(例)
$str = 'aaaa';
$str .= $chk ? 'bbb' . 'ccc' : 'ddd' . 'eee';
↓↓↓↓
$str = 'aaaa' . ($chk ? 'bbb' . 'ccc' : 'ddd' . 'eee');
実行速度の違いはありません。厳密には測定誤差未満の差があると思いますが、全体の処理がけっして速くはないphpスクリプトでは問題にはなりません。速度より「ソースの読みやすさ」を優先してください。
$buffer .= ',,'.$key.' 数: '.$value[0]['length'].' クラス: '. ($cachebool ? $class.',,<a href="' : 'なし,,<a href="');
これでちゃんとした結果が得られました。
速度に違いはないのですね、二行に分けた方が分かりやすそうなのでせっかくですが辞めておきます。すっきりしました、ありがとうございました。
No.2
- 回答日時:
$buffer .= (',,'.$key.' 数: '.$value[0]['length'].' クラス: '. $cachebool) ? $class.',,<a href="' : 'なし,,<a href="';
こうなっているかもしれませんね。
$buffer .= ',,'.$key.' 数: '.$value[0]['length'].' クラス: '. ($cachebool) ? $class.',,<a href="' : 'なし,,<a href="';
こうしたらどうなりますか?
No.1
- 回答日時:
$a=5;
$a *= 2+3 ;
と
$a=5*2+3;
が違うのは理解できますね?
http://www.php.net/manual/ja/language.operators. …
優先順位をよく調べて、あなたの書いた「1行版」がどのように解釈されるかよく考えましょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS 【CSS】特定のリンクを含むaタグを指定できるかどうか? 3 2022/10/15 02:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのクラスにて別ファイルの変...
-
phpのクラスメソッドの定義が長...
-
配列とオブジェクトの違い
-
CFileDialogの最初のディレクト...
-
VB6にてメールを送信する方法
-
onedrive にexcelファイルをア...
-
phpのheader("Location:#pos")...
-
バイナリファイルをブラウザに...
-
OpenGLで描いて画像ファイル出力
-
フォントの色を変えるには?
-
VB.NET 最下位のディレクトリ名...
-
リンク先を隠す方法はないでし...
-
PHPのif文でその処理を途中で抜...
-
FORMタグを使わずに、POSTする...
-
youtubeに音声のみのmp4ファイ...
-
mysql複数レコードをまとめて削...
-
受け取ったパラメータを次のphp...
-
phpの階層が変わると上手く読み...
-
Subversionのリポジトリの削除
-
PHPMailerのコードエラーが解決...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
ラッパークラスって何ですか?
-
class定義のphpをファイル分割...
-
PHPの名前空間について質問です。
-
配列とオブジェクトの違い
-
phpのクラスにて別ファイルの変...
-
文字連結中の三項演算子について
-
PHP4、PHP5 1ファイル複数クラ...
-
PHP5 コンストラクタや初期化の...
-
プログラムにも慣例みたいなも...
-
(クラス関連)staticキーワー...
-
phpで使用不可のクラス名
-
phpにおける初期化の意味
-
PHPでサブクラスからスーパクラ...
-
phpで時間を増やしていくにはど...
-
クラス
-
[CakePHP2.2] :: の意味と役割
-
Objectの型チェック
-
'_'(アンダースコア)の使い方...
-
$this->pets[$i]->report();の...
おすすめ情報