后端 - Lession 01 PHP 基础
Lession 01 php 基础
1. php 基础
phpinfo():输出版本号
- echo:输出文本
- php.ini:php的配置文件
2. php 变量
命名变量必须用 $ 开头
严格区分大小写
不能以特殊字符和数字开头(可以用下划线)
unset:销毁变量
isset():判断变量是否存在
isset(var1, var2)
普通变量的作用域:函数
内部作用域
和外部作用域
是不相关的<?php
// 变量的作用域
$test = 'hello'; function test () {
echo $test; // 报错, 变量未定义
} test();
2.1 静态变量:
static
可以定义静态变量- 只会初始化一次,会保存上一次的值
<?php // 静态变量
function total() {
static $num = 2;
$num *= 2;
echo $num;
} total();
total();
total();
2.2 超全局变量:
$GLOBALS
:用于在 PHP 脚本中的任意位置访问全局变量$_SERVER
:保存关于报头、路径和脚本位置的信息$_REQUEST
:接收 HTML 表单提交的数据$_POST
:接收 post 请求数据$_GET
:接收 get 请求数据$_FILES
:接收 文件 数据$_ENV
:是一个包含服务器端环境变量的数组$_COOKIE
:获取 请求所带的 COOKIE$_SESSION
:获取 请求所带的 SESSION
3. php 单引号 和 双引号区别
单引号不识别变量,双引号识别变量
单引号不会转义特殊字符, 双引号可以
<?php // 单双引号区别
$name = '张三';
$age = 18;
$sex = 'man'; echo "$name"; // 张三
echo '$name'; // $name // 结论:单引号不解析变量,双引号解析变量 echo "\n"; // 换行
echo '\n'; // \n // 结论:单引号不会转义特殊字符, 双引号可以
?>
变量和字符串,用一个点
.
拼接起来双引号可以将变量和字符串拼接起来
"{$name}好好学习" -> "张三好好学习"
双引号 套 单引号 套 变量,输出外面带单引号的变量
"'$name'" -> '张三'
单引号效率比双引号高
4. 数据类型
- 标量
- 整型:1 2
- 浮点型:1.2 1.3
- 布尔类型:true false
- 字符串:单双引号引起来的都是字符串
- 混合类型(重点)
- 数组:array
- 对象:object
- 特殊类型
- 空:null
- 资源:resource
5. 数据类型转换
- 检测数据类型:gettype()
- 类型转换
- intval():转换为整数,integer
- floatval():转换为小数,double
- strval():转换为字符串,string
- boolval():转换为布尔值,boolean
- 判断数据类型的常用函数
- is_array()
- is_string()
- is_bool()
- is_float()
- is_object()
- is_int()
- is_numeric():数字字符串会转换成数字,然后再判断,但不能混合非数字字符
- is_resource():判断是否是资源
- is_null()
- is_scalar():判断是否是标量
6. 常量
定义常量:
define('abc', 'abc');
常量注意点:
- 常量可以直接用大写字母和下划线定义,不必加
$
符号 - 赋值只能为标量
- 赋值只能为标量
- 常量不能写到字符串中
- 常量可以直接用大写字母和下划线定义,不必加
判断常量是否被定义:
defined('常量名')
系统常量:
__FILE__
:找你的文件__LINE__
:获取代码所在的行数__DIR__
:找到当前文件的目录PHP_OS
:获取系统信息PHP_VERSION
:获取版本信息__FUNCTION
:获取当前函数名M_PI
:圆周率了解:
__MHTHOD__
:获取当前成员方法名__NAMESPACE__
:获取当前命名空间的名字__TRAIT__
:获取当前 TRAIT 名字(多继承)__CLASS__
:获取当前类名
7. 运算符
与其他语言差不多
8. 为 false 的几种情况(条件判断)
- 字符串和数字:
''
、0
、'0'
、0.000
- 字符串
'0.000'
为真
- 数组:
[]
(与 js 不同)
9. 流程判断
与其他语言基本相同
拓展:
- 随机数:mt_rand(1, 10);
10. 循环
与其他语言一样,循环内的变量不是局部变量
11.1 函数
定义:function name() {}
函数分为类库函数 和 自定义函数
类库函数不可再自定义
行参可设置默认值,与 es6 类似
没设置默认参数时,实参少了会报错
函数不区分大小写
'.$temp; // 返回值 true
```
6. 变量和作用域看标题2 **变量**
7. **行参的类型约束**(重要)
---
### 11.2 函数的 行参 和 返回值
---
#### 11.2.1 行参约束类型
行参约束类型后,函数会将传入的数据转换为对应的数据,若无法转换,将报错。
```php
';
echo gettype($num).'
';
}
test('liucheng', 20);
test(520, 20);
// test(520, "a"); // 报错, 'a' 不是整数
```
---
#### 11.2.2 返回值的约束类型
变量括号后面加一个 `:string` , 约束其返回值为 string ,不是 string 就会报错
```php
');
print_r(test(520, 20).'
');
echo test(520, "a").'
';
```
---
#### 11.2.3 函数的可变参数
不用设置行参,即可获取传入的参数
1. `func_get_args()` : 获取传入的参数,组成数组。
2. `func_get_arg(n)` : 获取对应下标位置的参数
```php
';
return $temp;
}
print_r(test('liucheng', 20)); // 输出:Array ( [0] => liucheng [1] => 20 )
```
---
### 12. 常用函数
----
#### 12.1 数学函数
1. 随机数
* rand
* **mt_rand**:性能比 rand 好 4 倍
2. 小数
* floor:向下取整
* ceil:向上取整
* round:四舍五入取整
3. 其他
* abs:绝对值
* pi:圆周率
* M_PI:常量, 与 pi() 函数返回值相同
* pow:指数表达式
* max:最大值
* min:最小值
---
#### 12.2 字符串内置函数
---
1. 大小写转换
* strtolower:大写转小写
* strtoupper:小写转大写
* lcfirst:首字母小写
* ucfirst:首字母大写
* ucwords:每个单词首字母大写
2. 空白处理
* trim:去掉首位空格
* ltrim:去掉头部空格
* rtrim / chop:去掉尾部空格
3. 查找定位
* strstr / strchr:检测 字符串 在 另一个字符串 第一次出现到结尾的**内容**(大小写敏感)
* strrchr:检测 字符串 在 另一个字符串 最后一次出现 到 结尾 的内容
* stristr:strstr 忽略大小写版本
* strpos:返回字符串首次出现的位置(大小写敏感)
* stripos:strpos 忽略大小写版本
* strrpos:返回字符串最后一次出现的位置(大小写敏感)
* strripos:strrpos 忽略大小写版本
* sbustr:子字符串提取
* strpbrk:返回 (搜索条件的任意字符) 首次出现到结尾的内容(大小写敏感)
4. 比较
* strcmp:二进制比较字符串
* strcasecmp:strcmp 忽略大小写比较
* strnatcmp:使用一种"**自然排序**"算法来比较两个字符串(对大小写敏感),**在自然算法中,数字 2 小于数字 10。在计算机排序中,10 小于 2,这是因为 10 中的第一个数字小于 2。**
* strnatcasecmp:strnatcmp:忽略大小写版本
5. 顺序
* str_shuffle:随机打乱字符串顺序
* strrev:倒序排列字符串
6. 转换
* chr:将 ASCII 码值转换为字符
未完待续。。。
--------
#### 12.3 数组内置函数
后端 - Lession 01 PHP 基础的更多相关文章
- 01: tornado基础篇
目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 Torn ...
- Jam's balance HDU - 5616 (01背包基础题)
Jim has a balance and N weights. (1≤N≤20) The balance can only tell whether things on different side ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现
075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...
- 074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现
074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现 本文知识点:综合案例-数组移位-主方法功能3的实现 说明:因为 ...
- 073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现
073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现 本文知识点:综合案例-数组移位-主方法功能1和2的实现 说 ...
- 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法
072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...
- 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法
071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...
- 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据
070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...
随机推荐
- 解决win10开机出现recovery there was a problem with a device connected to your pc
问题描述: 开机无限重启并提示 recovery there was a problem with a device connected to your PC An unexpected I/O er ...
- IntelliJ IDEA Maven工程保证JDK版本不变
创建maven项目后修改pom文件idea会默认将jdk版本调回到1.5,这是因为没有在pom里面设置项目的jdk版本 解决方法: 在pom文件中设定jdk版本即可,以下这种写法会自动更新idea中的 ...
- QTcpSocket 对连接服务器中断的不同情况进行判定(六种情况,其中一种使用IsNetworkAlive API方法)
简述 对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器的连接状态.而对于客户端与服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结. 分为下面六种不同情况 客户端网线断开 客户端网 ...
- 以太网,IP,TCP,UDP数据包分析(此文言简意赅,一遍看不懂的话,耐心的看个10遍就懂了,感谢作者无私奉献)
1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 2.TCP/IP 网络协议栈分为应用层(Application).传输层(Tra ...
- java关键字-interface
1:是用关键字interface定义的. 2:接口中包含的成员,最常见的有全局常量.抽象方法. 注意:接口中的成员都有固定的修饰符. 成员变量:public static final 成员方法:pub ...
- 前端自动化工具gulp入门基础
gulp是前端开发过程中经常要用到的工具,非常值得花时间去掌握.利用gulp,我们可以使产品流程脚本化,节约大量的时间,有条不紊地进行业务开发.本文简单讲一下入门gulp需要掌握的东西. 安装gulp ...
- vim 列编辑模式
vim 列编辑模式 标签: vim 视窗模式 列编辑模式 vim 列编辑模式 例子:给列批量添加前缀.后缀.修改字段 vim 列编辑模式 vim 有三种编辑模式,命令模式.输入模式.视窗模式,我们常用 ...
- gitlab安装笔记一_虚拟机中安装Centos7
(为搭建gitlab环境的准备) 环境:vmware workstation 12 pro 系统: CentOS-7-x86_64-Everything-1804.iso (CentOS-7-Min ...
- 机器学习-5 支持向量机SVM
一.概念和背景 SVM:Support Vector Machine 支持向量机. 最早是由Vladimir N. Vapnik和Alexey Ya. Chervonenkis在1963年提出的. 目 ...
- Java:Web Service初入门
前言 Web Service技术在我第一次接触,又没有实际使用时完全不理解这是什么.以为是一种类似Spring,Shiro的编程框架.后来渐渐理解,WS(即Web Service缩写)是一种通用的接口 ...