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. 解决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 ...

  2. IntelliJ IDEA Maven工程保证JDK版本不变

    创建maven项目后修改pom文件idea会默认将jdk版本调回到1.5,这是因为没有在pom里面设置项目的jdk版本 解决方法: 在pom文件中设定jdk版本即可,以下这种写法会自动更新idea中的 ...

  3. QTcpSocket 对连接服务器中断的不同情况进行判定(六种情况,其中一种使用IsNetworkAlive API方法)

    简述 对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器的连接状态.而对于客户端与服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结. 分为下面六种不同情况 客户端网线断开 客户端网 ...

  4. 以太网,IP,TCP,UDP数据包分析(此文言简意赅,一遍看不懂的话,耐心的看个10遍就懂了,感谢作者无私奉献)

    1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 2.TCP/IP 网络协议栈分为应用层(Application).传输层(Tra ...

  5. java关键字-interface

    1:是用关键字interface定义的. 2:接口中包含的成员,最常见的有全局常量.抽象方法. 注意:接口中的成员都有固定的修饰符. 成员变量:public static final 成员方法:pub ...

  6. 前端自动化工具gulp入门基础

    gulp是前端开发过程中经常要用到的工具,非常值得花时间去掌握.利用gulp,我们可以使产品流程脚本化,节约大量的时间,有条不紊地进行业务开发.本文简单讲一下入门gulp需要掌握的东西. 安装gulp ...

  7. vim 列编辑模式

    vim 列编辑模式 标签: vim 视窗模式 列编辑模式 vim 列编辑模式 例子:给列批量添加前缀.后缀.修改字段 vim 列编辑模式 vim 有三种编辑模式,命令模式.输入模式.视窗模式,我们常用 ...

  8. gitlab安装笔记一_虚拟机中安装Centos7

    (为搭建gitlab环境的准备) 环境:vmware workstation 12 pro 系统: CentOS-7-x86_64-Everything-1804.iso  (CentOS-7-Min ...

  9. 机器学习-5 支持向量机SVM

    一.概念和背景 SVM:Support Vector Machine 支持向量机. 最早是由Vladimir N. Vapnik和Alexey Ya. Chervonenkis在1963年提出的. 目 ...

  10. Java:Web Service初入门

    前言 Web Service技术在我第一次接触,又没有实际使用时完全不理解这是什么.以为是一种类似Spring,Shiro的编程框架.后来渐渐理解,WS(即Web Service缩写)是一种通用的接口 ...