php基础-3
PHP 运算符
本章节我们将讨论 PHP 中不同运算符的应用。
在 PHP 中,赋值运算符 = 用于给变量赋值。
在 PHP 中,算术运算符 + 用于把值加在一起。
- 算术运算符表格
<?php
$x=10;
$y=6;
echo ($x + $y); // 输出16
echo '<br>'; // 换行
echo ($x - $y); // 输出4
echo '<br>'; // 换行
echo ($x * $y); // 输出60
echo '<br>'; // 换行
echo ($x / $y); // 输出1.6666666666667
echo '<br>'; // 换行
echo ($x % $y); // 输出4
echo '<br>'; // 换行
echo -$x; // -10
echo '10'+'20','<br>'; //30 int型
echo '10ab'+'20cd','<br>'; //30
?>
// PHP7+ 版本新增整除运算符 intdiv(),使用实例:
<?php
var_dump(intdiv(10, 3));
?>
>>> int(3)
PHP 赋值运算符
在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 5。
看字符串拼接实例
<?php
$a = "Hello";
$b = $a . " world!";
echo $b; // 输出Hello world!
$x="Hello";
$x .= " world!";
echo $x; // 输出Hello world!
?>
PHP 递增/递减运算符
<?php
$num=5;//注意到+号是从左向右顺序计算
echo (++$num)+(++$num)+(++$num); // 6 + 7 + 8 = 21
-------------------------
<?php
$num=5;
echo ($num++)+($num++)+($num++); //5 + 6 + 7 = =18
PHP 比较运算符
比较操作符可以让您比较两个值:
类型的比较见菜鸟教程:https://www.runoob.com/php/php-types-comparisons.html
PHP 逻辑运算符
<?php
$a=5;
$b=10;
if($a>10 && ++$a>20)
echo '你好吗';
echo $a; //5
//分析:$a>10为false, 与中只要有一个是false,另一个不用计算结果肯定是false,所以短路与++a就不计算了,结果是5
----------------------------
<?php
$a=5;
$b=10;
if(++$a<20 || ++$b>20)
echo '你好吗';
echo $a, $b; // 你好吗 6 10
//分析:短路或只要有一个为true,结果肯定是true,$a<10结果是true,后面++$a就不用计算了。
错误抑制符(@)
错误抑制符只对表达式有效
<?php
echo @($aa+$bb); //错误抑制
PHP 数组运算符
<?php
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>
>>>array(4) { ["a"]=> string(3) "red" ["b"]=> string(5) "green" ["c"]=> string(4) "blue" ["d"]=> string(6) "yellow" }
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
三元运算符(条件运算符)
形式1 (expr1) ? (expr2) : (expr3) 对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
形式2 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3
在 PHP7+ 版本多了一个 NULL 合并运算符,还多了一个组合比较符
形式:??
?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 等价于类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式如下:
$c = $a <=> $b;
解析如下:
- 如果 $a > $b, 则 $c 的值为 1。
- 如果 $a == $b, 则 $c 的值为 0。
- 如果 $a < $b, 则 $c 的值为 -1。
<?php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
// 多学一招:一个用来判断的函数
isset():判断变量是否被设置,并且设置的不是null
// isset():如果指定变量存在且不为 NULL,则返回 TRUE,否则返回 FALSE。
/*
如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。
若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。
*/
echo isset($name)?$name:'姓名不详'; //姓名不详
echo '<hr>';
算符优先级:括号优先级最高
<?php
// 优先级: && > = > and
// 优先级: || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c); // 这里的 $c 为 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d); //这里的 $d 就是 boolean 值 true
?>
>>>
int(3)
bool(true)
黑客信仰——世界上没有一个绝对安全的系统,只要这个系统是人设计的,就会有漏洞,因为人性具有弱点。