ホームページ  >  記事  >  バックエンド開発  >  PHPオペレーターのナレッジポイントをまとめたもの

PHPオペレーターのナレッジポイントをまとめたもの

藏色散人
藏色散人転載
2019-09-27 09:17:212411ブラウズ

1. 算術演算子

1. 概要

PHPオペレーターのナレッジポイントをまとめたもの

2. ヒント

除算演算子は常に浮動小数点数を返します。唯一の例外は、両方のオペランドが整数 (または文字列から変換された整数) であり、正確に割り切れる場合であり、その場合は整数を返します。

モジュロ演算子のオペランドは、演算前に整数 (小数部を除く) に変換されます。

モジュロ演算子 % の結果は、被除数の符号 (正または負の符号) と同じです。つまり、 $a % $b の結果は $a と同じ符号になります。例:

echo (5 % 3)."\n";        // prints 2
echo (5 % -3)."\n";        // prints 2
echo (-5 % 3)."\n";        // prints -2
echo (-5 % -3)."\n";       // prints -2

2. ビット演算子

1. 概要

PHPオペレーターのナレッジポイントをまとめたもの

2. ヒント

ディスプレイスメントは、PHP の数学演算です。

任意の方向に移動されたビットは破棄されます。

左にシフトすると、右側がゼロで埋められ、符号ビットが削除されます。これは、正と負の符号が保持されないことを意味します。

右にシフトすると、左側が符号ビットで埋められます。これは、正と負の符号が保持されることを意味します。

ビット演算子を使用する場合は、優先順位に特に注意してください。例:

$a & $b == true、最初に比較してからビット単位の AND を実行;

($a & $b) == true、最初にビット単位の AND を実行してから比較. .

3. 比較演算子

1. 概要

PHPオペレーターのナレッジポイントをまとめたもの

2 . TIPS

数値と文字列を比較する場合、または数値の内容を含む文字列を比較する場合、文字列は数値に変換され、その数値に従って比較が実行されます。このルールは switch ステートメントにも適用されます。 === または !== で比較する場合、型と値の両方が比較されるため、型変換は行われません。

<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true
switch ("a") {
case 0:
    echo "0";
    break;
case "a": // 永远不会到达a,因为 "a" 已经与 0 匹配
    echo "a";
    break;
}
?>

3. 複数の型の場合、比較演算子は次の表 (順序)

PHPオペレーターのナレッジポイントをまとめたもの

##4 に従って比較します。大まかな比較表

PHPオペレーターのナレッジポイントをまとめたもの

4. インクリメント/デクリメント演算子

1. 概要

PHPオペレーターのナレッジポイントをまとめたもの

2. ヒント

インクリメント/デクリメント演算子はブール値には影響しません。

NULL 値を減らしても効果はありませんが、NULL を増やした結果は 1 になります。

文字変数の算術演算を扱う場合、PHP は C の習慣ではなく Perl の習慣に従います。

たとえば、Perl では $a = 'Z'; $a ; は $a を 'AA' に変換し、C では a = 'Z'; a ; は a を ' [' ( 「Z」の ASCII 値は 90、「[」の ASCII 値は 91)。

文字変数は増加のみ可能で減少はできず、純粋な文字 (a ~ z および A ~ Z) のみをサポートすることに注意してください。

他の文字変数のインクリメント/デクリメントは無効となり、元の文字列は変更されません。

5. 論理演算子

1. 概要

PHPオペレーターのナレッジポイントをまとめたもの

2 . TIPS

「AND」と「OR」に 2 つの異なる形式の演算子がある理由は、演算の優先順位が異なるためです。

// "&&" 比 "and" 的优先级高
// 表达式 (true && false) 的结果被赋给 $g
// 等同于:($g = (true && false))
$g = true && false;
// 常量 true 被赋给 $h,false 被忽略
// 等同于:(($h = true) and false)
$h = true and false;

6. 配列演算子

1. 概要

PHPオペレーターのナレッジポイントをまとめたもの

2. ヒント

配列内のセルのキー名と値が同じ場合、比較すると同じになります

$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)

演算子とarray_merge()の違い

When 配列添字が文字の場合、同じキー名が見つかった場合、演算子は後続の値を破棄し、array_merge() は前の値を後続の値で上書きします。

配列の添字が数値の場合、array_merge() はすべての値を保持し、配列のインデックスを再作成します。演算子は、同じ添え字を持つ後続の値も破棄します。

$arr1 = [&#39;color&#39; => &#39;red&#39;, 10, 20];
$arr2 = [0, 1, &#39;color&#39; => &#39;green&#39;];
print_r($arr1 + $arr2);
print_r(array_merge($arr1, $arr2));

出力:

Array ( [color] => red [0] => 10 [1] => 20 ) 
Array ( [color] => green [0] => 10 [1] => 20 [2] => 0 [3] => 1 )

7. 演算子の優先順位

1. 概要

PHPオペレーターのナレッジポイントをまとめたもの

##2. ヒント

演算子の優先順位が同じ場合、演算子の組み合わせの方向によって操作方法が決まります。たとえば、「-」は左結合であり、1 - 2 - 3 は (1 - 2) - 3 と等価で、結果は -4 になります。一方、「=」は右結合なので、 $a = $b = $c は $a = ($b = $c) と同等です。

没有结合的相同优先级的运算符不能连在一起使用,例如 1 1 在PHP是不合法的。但另外一方面表达式 1

括号的使用,哪怕在不是必要的场合下,通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。

着重记忆:

递增/递减 > ! > 算术运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算符(^) > 位运算符(|) > 逻辑与 > 逻辑或 > 三目 > 赋值 > and > xor > or

3. 实战例题

请写出下列程序输出的结果

$a = 0;
$b = 0;
if ($a = 3 > 0 || $b = 3 > 0) 
{
    $a++;
    $b++;
    echo $a. "\n";
    echo $b. "\n";
}

例题分析

1.题目中包含 = > || 三种运算符,优先级顺序为 > > || > =

2.$a = 3 > 0 || $b = 3 > 0 等价于 $a = ( ( 3 > 0 ) || $b = ( 3 > 0 ) )

3.( 3 > 0 ) 为 true,因此不会再运算 || 后面的式子

4.$a = true,所以程序可以改写为

$a = 0;
$b = 0;
if ($a = true) 
{
    $a++;
    $b++;
    echo $a. "\n";
    echo $b. "\n";
}

5.因为 “递增/递减运算符不影响布尔值”,所以 $a++ 后,$a 的值依然是 true,echo true,会输出 1

6.因为 $b = 0 ,所以 $b++ 后,$b 的值为 1

7.输出结果为

1
1

以上がPHPオペレーターのナレッジポイントをまとめたものの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。