提交 149c7b48 编写于 作者: 彭世瑜's avatar 彭世瑜

fix

上级 4345cc91
......@@ -9,3 +9,5 @@
[PHP 变量和常量](blog/php-basic/variable.md)
[PHP数据类型](blog/php-basic/type.md)
[PHP运算符 operator](blog/php-basic/operator.md)
# PHP运算符 operator
## 赋值运算符
`=` 将右边的结果(变量,数据,常量)保存到内存的某个位置,然后将位置的内存地址赋值给左侧的变量
## 算术运算符
-`+`
-`-`
-`*`
-`/`
- 取余 `%`
注意:除法和取余的第二个参数不能为 0
```php
// 连贯赋值运算
$a = $b = 10;
```
## 比较运算符
比较两个数据,返回 bool 值
```
> 大于
>= 大于等于
< 小于
<= 小于等于
== 相等,值相等
!= 不相等
=== 全等,数据类型和数据值都相等
!== 全不相等
```
```php
<?php
$a = 123;
$b = '123';
var_dump($a == $b);
// bool(true)
var_dump($a === $b);
// bool(false)
```
## 逻辑运算符
返回 bool 值
```
&& 逻辑与 两边都为true
|| 逻辑或 一边为true
! 逻辑非 取反
```
```php
<?php
$a = 'tom';
$b = 'jacks';
// 逻辑与
var_dump($a == 'tom' && $b == 'jack');
// bool(false)
// 逻辑或
var_dump($a == 'tom' || $b == 'jack');
// bool(true)
// 逻辑非
var_dump($b == 'jack');
// bool(false)
var_dump(!($b == 'jack'));
// bool(true)
```
逻辑与和逻辑非,又称为短路运算,如果第一个表达式满足条件,就不会判断第二个条件
一般把频率出现高(能够直接判断出结果)的放在第一位
## 连接运算符
PHP 中将多个字符串拼接在一起
- `.` 将两个字符串连接到一起
- `.=` 复合运算,两个字符连接起来,并赋值给左边变量
```php
<?php
$a = 'Hello';
$b = 'World';
var_dump($a . $b);
// string(10) "HelloWorld"
// 相当于 $a = $a . $b;
$a .= $b;
var_dump($a);
// string(10) "HelloWorld"
```
## 错误抑制符
`@` 不显示报错内容
```php
<?php
echo @(1/0);
// INF
```
通常在生产环境使用
## 三目运算符
有三个表达式参与运算,简单的分支结构
语法格式
```
表达式1 ? 表达式2 : 表达式3
```
如果表达式 1 为 ture, 执行表达式 2, 否则执行表达式 3
```php
<?php
echo 1 > 10 ? '1大于10': '1小于10';
// 1小于10
```
复合三目运算符
```
表达式1 ? (表达式2 ? 表达式3 : 表达式4) : (表达式5 ? 表达式6 : 表达式7)
```
## 自操作运算符
https://www.bilibili.com/video/BV18x411H7qD?p=32&spm_id_from=pageDriver
......@@ -87,4 +87,163 @@ echo gettype($a);
- settype:改变数据本身
## 整数类型
https://www.bilibili.com/video/BV18x411H7qD?p=26
\ No newline at end of file
1、定义整数类型的方式
```php
<?php
// 十进制 120 = 1 x 100 + 2 x 10 + 0 x 1
$a = 120;
echo $a . PHP_EOL;
// 二进制 6 = 1 x 4 + 1 x 2 + 0 x 1
$b = 0b110;
echo $b . PHP_EOL;
// 八进制 80 = 1 x 64 + 2 x 8 + 0 x 1
$c = 0120;
echo $c . PHP_EOL;
// 十六进制 288 = 1 x 16 x 16 + 2 x 16 + 0 x 1
$d = 0x120;
echo $d . PHP_EOL;
```
PHP输出默认都是十进制
2、进制
- 十进制:逢10进1,[0-9]
- 二进制:逢2进1,[0-1]
- 八进制:逢8进1,[0-7]
- 十六进制:逢16进1,[0-9, A-F]
3、进制转换
十进制 转 二进制
方式一:除2取余
```
10 -> 1010
10 / 2 = 5 ... 0
5 / 2 = 2 ... 1
2 / 2 = 1 ... 0
1 / 2 = 0...1
```
方式二:取出最大的2的N次方,直到结果为0
```
10
= 8 + 2
= 2^3 + 2^1
= 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 0 x 2^0
=> 1010
```
二进制转十进制
方式:右侧开始,对应位数乘以2的N次幂,相加求和
```
110
=> 1 x 2^2 + 1 x 2^1 + 0 x 2^0
= 4 + 2 + 0
= 6
```
4、PHP提供的进制转换方法
```php
// 十进制 转 二进制
echo decbin(12); // 1100
// 十进制 转 八进制
echo decoct(12); // 14
// 十进制 转 十六进制
echo dechex(12); // c
```
## 浮点类型
浮点类型的定义方式
```php
<?php
$f1 = 1.23;
var_dump($f1);
// float(1.23)
// 科学计数法 e表示10为底
$f2 = 1.23e10;
var_dump($f2);
// float(12300000000)
// 整型超过自身存储的大小后会用浮点型存储
$f3 = PHP_INT_MAX + 1;
var_dump($f3);
// float(9.2233720368548E+18)
```
计算机中浮点数都不准确
```php
var_dump(2.1 / 3);
// float(0.7)
var_dump(2.1 / 3 == 0.7);
// bool(false)
```
## 布尔类型
只有两个值:true/false
通常用于判断比较
```php
var_dump(true);
// bool(true)
var_dump(FALSE);
// bool(false)
```
类型比较需要注意:
- empty() 判断数据的值是否为空,不是null, 如果为空返回true,不为空返回false
- isset() 判断数据存储的变量本身是否存在,存在返回true,不存在返回false
## PHP 类型比较表:
https://www.php.net/manual/zh/types.comparisons.php
使用 PHP 函数对变量 $x 进行比较
表达式 | gettype()|empty() | is_null()|isset() | boolean : if($x)
- | - | - | - | -| -
$x = "";| string | `true` | false|`true`| false
$x = null; | NULL| `true`| `true`| false|false
var $x; | NULL| `true`| `true`| false|false
$x is undefined | NULL| `true`| `true`| false|false
$x = [];| array|`true`| false|`true`| false
$x = ['a', 'b'];| array|false|false|`true`| `true`
$x = false; | boolean | `true`| false|`true`| false
$x = true; | boolean | false|false|`true`| `true`
$x = 1; | integer | false|false|`true`| `true`
$x = 42;| integer | false|false|`true`| `true`
$x = 0; | integer| `true`| false|`true`| false
$x = -1;| integer| false|false|`true`| `true`
$x = "1";|string | false|false|`true`| `true`
$x = "0";|string | `true`| false|`true`| false
$x = "-1"; | string | false|false|`true`| `true`
$x = "php"; | string | false|false|`true`| `true`
$x = "true";| string | false|false|`true`| `true`
$x = "false";|string | false|false|`true`| `true`
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册