后端 - 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 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...
随机推荐
- eclipse 插件编写(四)
前言 前面几篇文章讲了下如果编写简单的eclipse插件,如创建插件项目.编写右键弹出菜单等功能,接下来主要写一下如何生成代码的功能,这一片的功能跟插件本身的编写关联不太大,主要处理插件之后的业务内容 ...
- UWP-MSDN文档分类
原文:UWP-MSDN文档分类 UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学 ...
- Android零基础入门第70节:ViewPager轻松完成TabHost效果
上一期学习了ViewPager的简单使用,本期一起来学习ViewPager的更多用法. 相信很多同学都使用过今日头条APP吧,一打开主界面就可以看到顶部有很多Tab,然后通过左右滑动来切换,就可以通过 ...
- xen学习(一)
添加镜像源 [root@xen xen]# cat /etc/yum.repos.d/xen.repo [xen] name=xenserver baseurl=http://mirrors.163. ...
- Qt DLL总结【三】-VS2008+Qt 使用QPluginLoader访问DLL
目录 Qt DLL总结[一]-链接库预备知识 Qt DLL总结[二]-创建及调用QT的 DLL Qt DLL总结[三]-VS2008+Qt 使用QPluginLoader访问DLL 开发环境:VS20 ...
- GO方法与接口
Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承.虚函数.构造函数和析构函数.隐藏的this指针等. 方法 Go 语言中同时有函数和方法.方法就是一个包含了接受者(receiver)的函数,re ...
- 3023Java_控制语句
控制语句 0.前定义 语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句. 块确定了局部变量的作用域.块中的程序代码,作为一个整体,是要被一起执行的. 块可以被嵌套在另一个块中,但 ...
- Hyperledger Fabric1.4环境搭建过程
简单记录一下fabric版本1.4的环境搭建,运行环境为Ubuntu18.04,其中一些内容是根据官方文档整理的,如有错误欢迎批评指正. 本文只介绍最简单的环境搭建方法,具体的环境搭建解析在这里深入解 ...
- devexpress 给GridView添加行号
先找到 此时间gridView1_CustomDrawRowIndicator private void gridView1_CustomDrawRowIndicator(object sender, ...
- abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...