Fork me on 5号黯区

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)
posted @ 2020-07-07 11:32  小萝卜特·唐尼  阅读(178)  评论(0编辑  收藏  举报