$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における初期化の意味
-
(クラス関連)staticキーワー...
-
PHPのフレームワークの中でSmar...
-
class定義のphpをファイル分割...
-
データベースで値をインクリメ...
-
「static宣言されているメンバ...
-
ラッパークラスって何ですか?
-
[CakePHP2.2] :: の意味と役割
-
php インスタンスとオブジェク...
-
文字連結中の三項演算子について
-
templateメソッドパターンで抽...
-
phpで時間を増やしていくにはど...
-
phpでオブジェクト指向と呼べる...
-
PHPでサブクラスからスーパクラ...
-
クラスについて
-
フォントの色を変えるには?
-
リンク先を隠す方法はないでし...
-
AccessのDoCmd.SendObjectについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
phpのクラスにて別ファイルの変...
-
ラッパークラスって何ですか?
-
class定義のphpをファイル分割...
-
phpのクラスメソッドの定義が長...
-
'_'(アンダースコア)の使い方...
-
クラス
-
配列とオブジェクトの違い
-
PHPのクラス名の付け方
-
codeigniter cartのoptions
-
メンバインスタンスへのアクセ...
-
PHPでオブジェクト指向開発して...
-
ユーザー定義関数とクラスの違...
-
ソースファイルの分け方について
-
データベースで値をインクリメ...
-
require_onceについて
-
PHPでサブクラスからスーパクラ...
-
phpで使用不可のクラス名
-
php、可変プロパティ名について
-
比較演算子===と!==について
おすすめ情報