It should be noted that when using the ternary operator, it is recommended to use the print statement instead of the echo statement.
Pay attention to the understanding of the following series of sentences:
The code is as follows
Copy code
$str = $_GET['abc'] ? 'wangjinbo' : 'wjb';
This cannot be understood as: when $str is equal to $_GET['abc'], the assignment is 'wangjinbo' otherwise the assignment is 'wjb'; reason one: == should be used to judge equality; reason two: ternary operator The syntax is as shown above: (expr1) ? (expr2) : (expr3), obviously the above binary, ternary 'wangjinbo' or 'wjb' cannot form a meaningful expression alone;
The correct understanding is: when $_GET['abc'] is empty (that is, whether '', null, 0, undifine in PHP are all equivalent to the Boolean value false), assign $str to 'wangjinbo' , otherwise the value is 'wjb';
Logical operators:
For example:
The code is as follows
Copy code
$a=10;$b=7;
if($a++>8 || $b++>7){ //$a++>8 is true, $b++>7 will not be executed
echo 'OK!';
}
echo 'a='.$a.'b='.$b; // Output OK, a=11,b=7
Change it up
$a=10;$b=7;
if($a++>10 && $b++>7){ //$a++>8 is false, $b++>7 will not be executed
echo 'OK!';
}
echo 'a='.$a.'b='.$b; // a=11,b=7
Details: and && both represent logical AND, what is their difference?
Mainly reflected in priority
Priority of and
代码如下
复制代码
and< = <&&
or < = < ||
如:
$a=false || true; //&& > = > and ;先比较false || true,再赋值
$b=false or true; //|| > = > or ;先赋值$b=false,再比较,所以结果是false
var_dump($a,$b); //bool(true) bool(false)
Bitwise operators
Displacement is a mathematical operation in PHP. Bits moved out in any direction are discarded. When shifting left, the right side is padded with zeros, and the sign bit is moved away, meaning that the sign is not preserved. When shifting right, the left side is padded with sign bits, which means the sign is preserved.
Use parentheses to ensure desired precedence. For example, $a & $b == true performs comparison first and then performs bitwise AND; while ($a & $b) == true performs bitwise AND first and then performs comparison.
Pay attention to data type conversion. If both left and right arguments are strings, the bitwise operators operate on the ASCII values of the characters.
PHP’s ini setting error_reporting uses bitwise values,
Real-life examples of turning off a bit are provided. To show except prompt level
For all errors except php.ini, use this:
E_ALL & ~E_NOTICE
The specific operation method is to first obtain the value of E_ALL:
00000000000000000111011111111111
Then get the value of E_NOTICE:
00000000000000000000000000001000
Then negate it via ~:
11111111111111111111111111110111
Finally, use bitwise AND (&) to get the bits that are set (to 1) in both values:
00000000000000000111011111110111
Another method is to use bitwise XOR (^) to get only the values in
The bits set in one of the values:
E_ALL ^ E_NOTICE
error_reporting can also be used to demonstrate how to set the bit. Show only errors and recoverables
The wrong way is:
E_ERROR | E_RECOVERABLE_ERROR
That is to say, E_ERROR
00000000000000000000000000000001
and E_RECOVERABLE_ERROR
00000000000000000001000000000000
Use the bitwise OR (|) operator to get the result of a bit being set in any value:
00000000000000000001000000000001
Example #1 AND, OR and XOR bitwise operators for integers
The code is as follows
Copy code
代码如下
复制代码
/*
* Ignore the top section,
* it is just formatting to make output clearer.
*/
If comparing a number to a string or comparing strings involving numeric content, the string is converted to a numeric value and the comparison is performed as a numeric value. This rule also applies to switch statements. When comparing with === or !==, no type conversion is performed because both types and values are compared.
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn