1

これを 1 行または 2 行の短縮形の 3 進数にするにはどうすればよいですか?

if ($tame == null): 
    echo $tame = '0' . '<br />';
else: 
    echo $tame . '<br />';
endif;
4

8 に答える 8

4

OP は $tame が整数値であることを期待しているようです。そうでなければ、なぜ彼はnullにゼロを書くのでしょうか?

このような場合は。これが最短の解決策です。

echo (int)$tame.'<br/>';

nullまたは数値の場合は0がエコーされます。PHP は null とゼロを同じように扱うため、$tame をゼロに設定する理由もありません。

于 2013-01-19T02:31:49.620 に答える
3
$tame = ($tame == null) ? 0 : $tame;
echo $tame . '<br />';
于 2013-01-19T02:14:48.373 に答える
2
echo $tame == null ? $tame = '0<br />' : $tame.'<br />';
于 2013-01-19T02:15:03.020 に答える
1
echo ($tame == null ? ($tame = 0) : $tame), '<br />';
于 2013-01-19T02:21:07.043 に答える
1

三項演算子は、基本的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 />';
于 2013-01-19T02:21:15.593 に答える
0
echo (is_null($tame)) ? '0<br />' : $tame . '<br />';
于 2013-01-19T02:14:57.110 に答える
0

もう1つの方法はどうですか:)

echo $tame . (!is_null($tame)?:'0'). '<br />';

ご覧のとおり、中央部分を省略しました.php 5.3以降、このようにすることができます

三項部分は、印刷する必要がある部分だけです。古いphpでもこのように行うことができます

echo $tame . (is_null($tame)?'0':''). '<br />';
于 2013-01-19T02:27:50.597 に答える
0

$tameが null または整数の場合、ロジックを完全にスキップできます。

echo sprintf("%d<br />", $tame);

これは、@mellamokb が指摘したように、2 行目に割り当てる"0<br />"つもりがなかったことを前提としています。$tame

于 2013-01-19T02:36:49.330 に答える