后端 - 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 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...
随机推荐
- missing equal sign
"UPDATE TB_BOOKINGSET REC_LOC_CODE = ?,CUSTOMER_ADDR?WHERE BOOKING_NO=? AND TRANSPORT_MODE=? &q ...
- EF 里的 join and Group Join
join ); pageCount = _db.Orders.Count(); return _db.Orders.OrderByDescending(c=>c.ID).Skip(skip).T ...
- 将Imagelist里的图像复制到TCanvas上的指定区域
function Tdmd.Draw_Image_In_Rect(C:TCanvas;R:TRect;i:integer):boolean;var tr:TRect;begin if i< ...
- Qt+QZXing编写识别二维码的程序
本人最近在用Qt编写程序,需要用编写二维码识别功能.在网上搜寻一番,找到了QZXing.配置过程中确实出了一大把汗,这里我写这篇文章记录配置方法,替后人省一把汗吧!我的开发环境:MSVC2010 + ...
- 笨重的mfc还在基于系统控件,熟练的mfc工程师还比不过学习Qt一个月的学生开发效率高(比较精彩,韦易笑)
作者:韦易笑链接:https://www.zhihu.com/question/29636221/answer/45102191来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新:擦,本来只有 ...
- WPF四年,尤不足以替代WinForm
WPF四年,尤不足以替代WinForm WPF出山已四年,作为官方内定的下一代UI系统掌门,没少露脸.但这个新掌门能否胜任,仍是众多开发者的心头之虑.通过对VisualStudio 2010的编辑器部 ...
- Oracle数据库密码重置、导入导出库命令
重置办法如下:打开CMD命令提示符,然后输入下面命令进行重置: 输入sqlplus /nolog,回车 SQL> conn /as sysdba 已连接: SQL>alter user s ...
- hadoop之文件管理基本操作
# 格式化hdfs hadoop namenode -format # 查看hadoop下的文件夹 hadoop fs -ls # 创建hdfs文件夹 hadoop fs -mkdir /user/i ...
- jQuery框架 的四个入口函数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- linux 十五个原理知识点
DNS系统架构与解析原理http协议通信原理TCP/IP的3次握手和四次断开原理MySQL主从同步原理Nginx配合php的fastcgi工作原理Lvs的4种模式工作原理Memcached工作原理(内 ...