これを 1 行または 2 行の短縮形の 3 進数にするにはどうすればよいですか?
if ($tame == null):
echo $tame = '0' . '<br />';
else:
echo $tame . '<br />';
endif;
これを 1 行または 2 行の短縮形の 3 進数にするにはどうすればよいですか?
if ($tame == null):
echo $tame = '0' . '<br />';
else:
echo $tame . '<br />';
endif;
OP は $tame が整数値であることを期待しているようです。そうでなければ、なぜ彼はnullにゼロを書くのでしょうか?
このような場合は。これが最短の解決策です。
echo (int)$tame.'<br/>';
nullまたは数値の場合は0がエコーされます。PHP は null とゼロを同じように扱うため、$tame をゼロに設定する理由もありません。
$tame = ($tame == null) ? 0 : $tame;
echo $tame . '<br />';
echo $tame == null ? $tame = '0<br />' : $tame.'<br />';
echo ($tame == null ? ($tame = 0) : $tame), '<br />';
三項演算子は、基本的if..else
に 1 行のステートメントです。
if (condition) {
action(a);
} else {
action(b);
}
になる:
action( condition ? a : b );
あなたが持っているものは次のとおりです。
if ($tame == null) {
echo $tame = '0' . '<br />';
} else {
echo $tame . '<br />';
}
次のように記述できます。
echo $tame == null ? $tame = '0<br />' : $tame . '<br />';
$tame
ただし、ステートメントの一部として が変更されていることを考えると、この 3 項ステートメントは比較的複雑です。このように記述されたコードは読みにくく、そのためデバッグが難しく、エラーが発生しやすくなります。コードをより冗長な形式で記述した方が、全体的には良くなります。
if ($tame == null) {
$tame = '0';
}
echo $tame . '<br />';
echo (is_null($tame)) ? '0<br />' : $tame . '<br />';
もう1つの方法はどうですか:)
echo $tame . (!is_null($tame)?:'0'). '<br />';
ご覧のとおり、中央部分を省略しました.php 5.3以降、このようにすることができます
三項部分は、印刷する必要がある部分だけです。古いphpでもこのように行うことができます
echo $tame . (is_null($tame)?'0':''). '<br />';
$tame
が null または整数の場合、ロジックを完全にスキップできます。
echo sprintf("%d<br />", $tame);
これは、@mellamokb が指摘したように、2 行目に割り当てる"0<br />"
つもりがなかったことを前提としています。$tame