Lession 01 php 基础

1. php 基础

  1. phpinfo():输出版本号

    1. echo:输出文本
    2. php.ini:php的配置文件

2. php 变量

  1. 命名变量必须用 $ 开头

  2. 严格区分大小写

  3. 不能以特殊字符和数字开头(可以用下划线)

  4. unset:销毁变量

  5. isset():判断变量是否存在 isset(var1, var2)

  6. 普通变量的作用域:函数 内部作用域外部作用域 是不相关的

    <?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 单引号 和 双引号区别

  1. 单引号不识别变量,双引号识别变量

  2. 单引号不会转义特殊字符, 双引号可以

    <?php 
    
    	// 单双引号区别
    $name = '张三';
    $age = 18;
    $sex = 'man'; echo "$name"; // 张三
    echo '$name'; // $name // 结论:单引号不解析变量,双引号解析变量 echo "\n"; // 换行
    echo '\n'; // \n // 结论:单引号不会转义特殊字符, 双引号可以
    ?>
  3. 变量和字符串,用一个点 . 拼接起来

  4. 双引号可以将变量和字符串拼接起来 "{$name}好好学习" -> "张三好好学习"

  5. 双引号 套 单引号 套 变量,输出外面带单引号的变量 "'$name'" -> '张三'

  6. 单引号效率比双引号高


4. 数据类型

  1. 标量

    1. 整型:1 2
    2. 浮点型:1.2 1.3
    3. 布尔类型:true false
    4. 字符串:单双引号引起来的都是字符串
  2. 混合类型(重点)
    1. 数组:array
    2. 对象:object
  3. 特殊类型
    1. 空:null
    2. 资源:resource

5. 数据类型转换

  1. 检测数据类型:gettype()
  2. 类型转换
    1. intval():转换为整数,integer
    2. floatval():转换为小数,double
    3. strval():转换为字符串,string
    4. boolval():转换为布尔值,boolean
  3. 判断数据类型的常用函数
    1. is_array()
    2. is_string()
    3. is_bool()
    4. is_float()
    5. is_object()
    6. is_int()
    7. is_numeric():数字字符串会转换成数字,然后再判断,但不能混合非数字字符
    8. is_resource():判断是否是资源
    9. is_null()
    10. is_scalar():判断是否是标量

6. 常量

  1. 定义常量:define('abc', 'abc');

  2. 常量注意点:

    • 常量可以直接用大写字母和下划线定义,不必加$符号
    • 赋值只能为标量
    • 赋值只能为标量
    • 常量不能写到字符串中
  3. 判断常量是否被定义:defined('常量名')

系统常量:

  1. __FILE__:找你的文件

  2. __LINE__:获取代码所在的行数

  3. __DIR__:找到当前文件的目录

  4. PHP_OS:获取系统信息

  5. PHP_VERSION:获取版本信息

  6. __FUNCTION:获取当前函数名

  7. M_PI:圆周率

  8. 了解:

    • __MHTHOD__:获取当前成员方法名

    • __NAMESPACE__:获取当前命名空间的名字

    • __TRAIT__:获取当前 TRAIT 名字(多继承)

    • __CLASS__:获取当前类名


7. 运算符

与其他语言差不多


8. 为 false 的几种情况(条件判断)

  1. 字符串和数字:

    • '' 0'0'0.000
    • 字符串 '0.000' 为真
  2. 数组:[] (与 js 不同)

9. 流程判断

与其他语言基本相同

拓展:

  1. 随机数:mt_rand(1, 10);

10. 循环

与其他语言一样,循环内的变量不是局部变量


11.1 函数

定义:function name() {}

  1. 函数分为类库函数 和 自定义函数

  2. 类库函数不可再自定义

  3. 行参可设置默认值,与 es6 类似

  4. 没设置默认参数时,实参少了会报错

  5. 函数不区分大小写

'.$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 基础的更多相关文章

  1. 01: tornado基础篇

    目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 Torn ...

  2. 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 ...

  3. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结

    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...

  4. 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现

    075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...

  5. 074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现

    074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现 本文知识点:综合案例-数组移位-主方法功能3的实现 说明:因为 ...

  6. 073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现

    073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现 本文知识点:综合案例-数组移位-主方法功能1和2的实现 说 ...

  7. 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法

    072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...

  8. 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法

    071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...

  9. 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据

    070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...

随机推荐

  1. 使用 Elastic Stack 来监控和调优 Golang 应用程序

    Golang 因为其语法简单,上手快且方便部署正被越来越多的开发者所青睐,一个 Golang 程序开发好了之后,势必要关心其运行情况,今天在这里就给大家介绍一下如果使用 Elastic Stack 来 ...

  2. QT+OpenGL读取显示图片,OpenGL在QT里的刷新问题(好几篇)

    GLuint readImage(char *filename){    GLuint tex_id;    GLint alignment; QImage tex, buf;    buf.load ...

  3. 数据备份服务商Rubrik获4000万美元B轮融资

    搜狐科技 文/丽丽卡 5月27日,数据备份服务商Rubrik获Greylock Partners领投的4000万美元B轮融资,Lightspeed Venture Partners及其现有投资者跟投, ...

  4. inno setup 配合istools

     istool,可以认为是inno setup的IDE吧   用用就知道了,istool用起来方便些,当然,脚本写好了,用不用istool就无所谓了 

  5. 3021Java_数据类型

    1.分类 Java数据类型 基本数据类型 数值型 整数类型 浮点类型 字符型 布尔型 引用数据类型 类 接口 数组 2.基本数据类型 2.1 综述 java的8种基本数据类型(简单数据类型) bool ...

  6. spring 5.x 系列第22篇 —— spring 定时任务 (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 关于任务的调度配置定义在ServletCo ...

  7. JavaWeb入门_模仿天猫整站Tmall_SSM实践项目

    Tmall_SSM 技术栈 Spring MVC+ Mybatis + Spring + Jsp + Tomcat , 是 Java Web 入门非常好的练手项目 效果展示: 模仿天猫前台 模仿天猫后 ...

  8. vue回顶部 组件 可以直接使用

    <template> <div id="goTop"> <div class="goTop" v-show="goTop ...

  9. 了解selenium--(虫师的博客)

    Selenium is a portable software-testing framework for web applications. Selenium is composed of seve ...

  10. django实战仿慕课网在线视频网站(完成了85%以上的功能已上传github:https://github.com/huwei86/mxonline):

    1. 前台功能模块 基本模块:登录 注册 找回密码 / 全局搜索 / 个人中心, 课程功能:课程管理 / 讲师管理 / 授课机构管理  热门推荐 相关课程推荐 用户操作管理:用户收藏 / 课程评论   ...