2

私はこのような3つの変数を持っています

$posted_on = '0';
$shared_on = '34';
$by_id = '12';

$owner上記の値がで始まらない3つの変数に値0を割り当てたいと思い$posted_onます。現在私はこれを行っていますが、これは正しい結果を出力しません

$owner = $posted_on;
$owner = '0' ? $shared_on : $owner;
$owner = '0' ? $by_id : $owner;
4

5 に答える 5

1

あなたはあなたのオペレーターを混同しました。比較するには、==またはを使用する必要があります===

$owner = $posted_on;
$owner == 0 ? $shared_on : $owner;
$owner == '0' ? $by_id : $owner;

=(代入)演算子を使用すると、各ステートメントに効果的に代入0し、結果(代入の定義で$ownerは常に)が真であるかどうかを確認できます。0

2つの違いは、2つのオペランドの値が等しいかどうかを確認するために「==」を使用する必要があることです。一方、'==='は、オペランドのタイプだけでなく値もチェックします。

http://www.geeksww.com/tutorials/web_development/php_hypertext_preprocessor/tips_and_tricks/difference_between_equal_and_identical_comparison_operators_php.php

演算子を使用することもできます。この?:演算子は、左側で真の値(数値の場合はゼロ以外)をチェックし、左側がfalseの場合にのみ右側を使用します。

$owner = $posted_on ?: ($shared_on ?: $by_id);

ただし、この場合、よりクリーンなコードを作成するには、ifステートメントを使用します。$ownerこれは、例のように誤った条件で自分自身に再割り当てする必要がないためです。

于 2013-02-21T13:08:06.553 に答える
1

シングル=は値を割り当て、ダブル==またはトリプル===は2つの変数を評価します。

これを試して:

$owner = $posted_on;
$owner = $owner === 0 ? $shared_on : $owner;
$owner = $owner === '0' ? $by_id : $owner;
于 2013-02-21T13:09:33.590 に答える
1

or暗黙の型変換の動作を使用できます。

$a = 1; $b = 0; $c = 5;
$x = $a or $x = $b or $x = $c;

echo $x;
于 2013-02-21T13:11:41.343 に答える
1

最短の方法は次のとおりです。

$owner = $posted_on ?: ($shared_on ?: $by_id);

短い三項演算子 は、 -ish(ゼロ以外の数値)の場合は左の引数に評価され、そうでない場合は右の引数に評価?:されます。true

PHPでは三項演算子が結合性のままであるため、括弧が必要であることに注意してください。

于 2013-02-21T13:12:55.783 に答える
0

ワンライナーを使用できます:

$owner = $posted_on == '0' ? ($shared_on == '0' ? $shared_on : $by_id) : $posted_on;

または、数値を扱う場合は、

$owner = $posted_on ?: ($shared_on ?: $by_id);
于 2013-02-21T13:09:28.867 に答える