后端 - 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 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...
随机推荐
- 奇虎360选择IPO “壳概念”很受伤
黄一帆 “市场正呈现出为一幕经典影像:在绚丽的霞光笼罩下,蔚蓝色的大海边,在金色的海岸上,欢笑的孩子们踮起脚尖,刚好看见原来海平面露出的航船桅杆——那是缓缓驶来的注册制号:而转过头来,则是沙滩上大 ...
- 让VC2012生成的程序支持XP系统(修改mkspecs\win32-msvc2012\qmake.conf,QT的DLL都是支持XP的,只与EXE有关)good
如果用的编译器是VC2012以上,那么默认生成出的程序是不能运行在XP系统上的.所以需要修改链接参数 我们要做的是修改qmake.conf文件中的参数,文件路径根据开发环境不同而不同下面以5.1.1 ...
- Eric Linux - 1 Basic concepts of linux
Computer basic Computer 5 parts CPU Input Output Memory External storage device. CPU RISC: Reduced I ...
- win7访问部分win2003速度慢
解决办法: 关闭TCPIP协议的自动优化调整功能,在win7上,以管理员身份运行cmd,输入 netsh interface tcp set global autotuninglevel=disabl ...
- PHP实现WebService服务
第一步,安装PHP扩展SOAP并开启扩展,是否开启成功以phpinfo为准. 第二步,创建服务端文件server.php <?php Class server { public function ...
- 数据管理工具Flux、Redux、Vuex的区别
目录 为什么要进行数据管理? 怎么有效地进行数据管理? 数据管理工具 1. Flux 2. Redux 3. Vuex 使用数据管理工具的场景 相关资料 主要讲解一下前端为什么需要进行数据管理,有效的 ...
- 基于jsp技术的校园二手交易网站
[项目介绍]基于jsp的校园二手商品交易网站系统使用jsp技术进行开发,项目主要实现了一整套的校园二手交易逻辑, 主要功能如下(包括但不限于,只列出主要功能): 管理员模块 |-----用户管理 ...
- CQRS之旅——旅程7(增加弹性和优化性能)
旅程7:增加弹性和优化性能 到达旅程的终点:最后的任务. "你不能飞的像一只长着鹪鹩翅膀的老鹰那样."亨利·哈德逊 我们旅程的最后阶段的三个主要目标是使系统对故障更具弹性,提高UI ...
- Hadoop 学习之路(一)—— 分布式文件系统 HDFS
一.介绍 HDFS (Hadoop Distributed File System)是Hadoop下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 2 ...
- 【设计模式】行为型03观察者模式(Observer Pattern)
记得16年初第一次学习了23种设计模式,但是除了少数几个简单的外,其他的很多都是学了个似懂非懂,以至于有人问起甚至说不上来,现在想想,其实就是没看懂而已.例如观察者模式,其实原理很简单,但是当时并没有 ...