PHPで <?php

PHP48閲覧

ベストアンサー

0

\u003e個人的には、こう書きます \u003eprintf(\u0027\u003coption value=\u0022%d\u0022%s\u003e%d\u003c/option\u003e\u0027 . PHP_EOL, $i, ($i === $int_nhour) ? \u0027 selected\u0027 : \u0027\u0027, $i) 個人的にはそう書くとHTMLとしての見通しが悪いのでやらない 全てを変数に入れてecho(可能な限りヒアドキュメント)一択

ThanksImg質問者からのお礼コメント

ありがとうございます^_^

お礼日時:1/24 15:41

その他の回答(1件)

0

$nhour が文字列なんですよね? >こうするとエラーになる。 エラーメッセージを転記してください(行番号があるなら、どの行でエラーになっているのかも)。 strstr の定義から考えると引数の順が逆だと思います https://www.php.net/manual/ja/function.strstr.php また、開始位置が 0(緩やかな比較では false と判定される)ということを考慮すれば、 × $isSelected = strstr($nhour, $i) ? 'selected' : ''; △ $isSelected = strstr(sprintf('%02d', $i), $nhour) !== false ? ' selected' : ''; でしょうけど、strstr では、$nhour が 1 のときに、1, 10, 11, 12 が slected にならないかとか、面倒な問題が出てきますよね(必ず前ゼロを付与するならいいですが)。 最適解は最初に書かれている ◎ $isSelected = ($i == $nhour) ? ' selected' : ''; だろうと思います。 というか $nhour のまま使わずに($i を整数でループさせるので)「整数」にして比較すべきだとは思いますけどねぇ・・・ (蛇足) 個人的には、こう書きますね(汗 $int_nhour = intval($nhour); for($i = 0; $i <= 23; $i++) printf('<option value="%d"%s>%d</option>' . PHP_EOL, $i, ($i === $int_nhour) ? ' selected' : '', $i);