>  기사  >  백엔드 개발  >  PHP 운영자 지식 포인트 편집

PHP 운영자 지식 포인트 편집

藏色散人
藏色散人앞으로
2019-09-27 09:17:212432검색

1. 산술 연산자

1. 개요

#🎜 🎜 #PHP 운영자 지식 포인트 편집

2. TIPS

나누기 연산자는 항상 부동 소수점 숫자를 반환합니다. 유일한 예외는 두 피연산자가 모두 정수(또는 문자열에서 변환된 정수)이고 정확하게 나눌 수 있는 경우입니다. 이 경우 정수를 반환합니다.

모듈로 연산자의 피연산자는 연산 전에 정수(소수 부분 제외)로 변환됩니다.

모듈로 연산자 %의 결과는 피제수의 부호(양수 또는 음수 부호)와 같습니다. 즉, $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. TIPS

Displacement는 PHP의 수학 연산입니다.

어떤 방향으로든 나온 비트는 폐기됩니다.

왼쪽으로 이동하면 오른쪽이 0으로 채워지고 부호 비트가 제거됩니다. 즉, 양수 및 음수 부호는 유지되지 않습니다.

오른쪽으로 이동하면 왼쪽이 부호 비트로 채워지므로 양수 및 음수 부호가 유지됩니다.

비트 연산자를 사용할 때는 우선순위에 특히 주의하세요. 예:

$a & $b == true, 먼저 비교한 다음 비트 AND를 수행합니다.

($a & $b) == true, 비트 AND를 수행합니다. 먼저 다시 비교해보세요.

3. 비교 연산자

1. 개요

#🎜 🎜 #

2.TIPSPHP 운영자 지식 포인트 편집

숫자와 문자열을 비교하거나 숫자 내용이 포함된 문자열을 비교하면 문자열이 다음으로 변환됩니다. 숫자 값과 비교는 숫자로 수행됩니다. 이 규칙은 스위치 문에도 적용됩니다. === 또는 !==로 비교할 경우 유형과 값을 모두 비교하므로 유형 변환이 수행되지 않습니다.

<?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. 여러 유형의 경우 비교 연산자는 다음 표에 따라 순서대로 비교됩니다.

#🎜 🎜 #

4. 느슨한 비교표

PHP 운영자 지식 포인트 편집

4. 🎜🎜#

PHP 운영자 지식 포인트 편집1. 개요

2. 🎜🎜#

증가/감소 연산자는 부울 값에 영향을 주지 않습니다.

PHP 운영자 지식 포인트 편집NULL 값을 줄여도 효과는 없지만, NULL을 증가시키면 결과는 1이 됩니다.

문자 변수에 대한 산술 연산을 처리할 때 PHP는 C가 아닌 Perl의 습관을 따릅니다. 예를 들어 Perl에서는 $a = 'Z'; $a++; C에서 a = 'Z'; ['('Z'의 ASCII 값은 90이고, '['의 ASCII 값은 91입니다).

문자 변수는 증가만 할 수 있고 감소할 수 없으며 순수 문자(a-z 및 A-Z)만 지원합니다.

다른 문자 변수의 증감은 유효하지 않으며, 원래 문자열은 변경되지 않습니다.

5. 논리 연산자

1. 개요

#🎜 🎜 #

2. TIPS

"AND"와 "OR"의 연산자 형태가 다른 이유는 연산의 우선순위 때문입니다. 수준이 다릅니다.

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

PHP 운영자 지식 포인트 편집 6. 배열 연산자

1 개요

# 🎜 🎜#

2. TIPS

배열의 셀은 키 이름과 값이 동일하면 동일합니다

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

+ 연산자와 array_merge()의 차이점

PHP 운영자 지식 포인트 편집배열 첨자가 문자이고 동일한 키 이름을 발견하면 + 연산자는 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. 개요# 🎜🎜 #

2.TIPS

연산자 우선순위가 동일하면 연산자의 바인딩 방향은 작동 방식을 결정합니다. 예를 들어 "-"는 왼쪽 관절이고 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제