php演算子優先度タイトルセット
1984 ワード
タイトル1
答え:
タイトル2
答え:
タイトル3
答え:
タイトル4
答え:
$x = 2;
echo $x == 2 ? ' ' : $x == 1 ? ' ' : ' ';
答え:
解析:1】==演算子は三目演算子より優先度が高い($x == 2) ? ' ' : $x == 1 ? ' ' : ' ' => true ? ' ' : $x == 1 ? ' ' : ' '
】三目演算子は左結合性を持っています.つまり、左の三目演算(true ? ' ' : $x == 1) ? ' ' : ' ' => ' ' ? ' ' : ' '
を優先的に計算します.タイトル2
$a = 3;
$b = 5;
if ($a = 3 || $b = 7) {
$a++;
$b++;
}
echo '$a= ', $a, '$b=', $b;
答え:
$a=1 $b=6
解析:1】論理または‖演算子優先度比付与演算子=優先度が$a = (3 || $b = 7)
高い論理または‖演算子短絡効果、左側がtrue、右側がtrue、右側が実行していない、フルfalseのみfalse $a = true
$b = 5
3】増加減少はブール値に影響しない、すなわちtrue増加後もtrue、減少後もtrue、false同理$a++ => true++ => true
$b++ => 5++ => 6
4]ブール値をechoで出力した後、trueは1、falseは0であるため最終結果は:a=1 b=6タイトル3
$a = 3;
$b = 4;
if ($a = 5 && ($b = 6)) {
$a += 1;
$b += 1;
}
echo '$a= ', $a, '$b=', $b;
答え:
$a=2 $b=7
解析:1】論理と&&演算子優先度比賦値演算子=優先度が$a = 5 && ($b = 6) => $a = (5 && ($b = 6))
高いかっこ内の式は$a = (5 && ($b = 6)) => $a = (5 && 6) => $a = true
3を優先的に実行する】ブール値に影響はなく、+=、-=、*=、/=などは賦値演算子に属し、ブール値は数値に変換されて$a += 1 => $a = true + 1 => $a = 1 + 1 => $a = 2
$b += 1 => $b = 6 + 1 => $b = 7
を演算するので、最終結果はa=2 b=7タイトル4
$a = null;
$b = true;
$a++;
$b++;
echo '$a= ', $a, '$b=', $b;
答え:
$a=1 $b=1
解析:1]増加減少はブール値に影響を及ぼさない.すなわち、true増加後もtrueであり、減少後もtrueであり、falseは同じである.しかしnullに対して増加した後、1であり、減少はnullに影響を及ぼさなかった$a++ => null++ => 1
$b++ => true++ => true
」ブール値をechoで出力した後、trueは1であり、falseは0であった.null echo出力が空の場合、すなわち$a= $b=1
であるため、最終結果はa=1 b=1である