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. missing equal sign

    "UPDATE TB_BOOKINGSET REC_LOC_CODE = ?,CUSTOMER_ADDR?WHERE BOOKING_NO=? AND TRANSPORT_MODE=? &q ...

  2. EF 里的 join and Group Join

    join ); pageCount = _db.Orders.Count(); return _db.Orders.OrderByDescending(c=>c.ID).Skip(skip).T ...

  3. 将Imagelist里的图像复制到TCanvas上的指定区域

    function Tdmd.Draw_Image_In_Rect(C:TCanvas;R:TRect;i:integer):boolean;var  tr:TRect;begin    if i< ...

  4. Qt+QZXing编写识别二维码的程序

    本人最近在用Qt编写程序,需要用编写二维码识别功能.在网上搜寻一番,找到了QZXing.配置过程中确实出了一大把汗,这里我写这篇文章记录配置方法,替后人省一把汗吧!我的开发环境:MSVC2010 + ...

  5. 笨重的mfc还在基于系统控件,熟练的mfc工程师还比不过学习Qt一个月的学生开发效率高(比较精彩,韦易笑)

    作者:韦易笑链接:https://www.zhihu.com/question/29636221/answer/45102191来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新:擦,本来只有 ...

  6. WPF四年,尤不足以替代WinForm

    WPF四年,尤不足以替代WinForm WPF出山已四年,作为官方内定的下一代UI系统掌门,没少露脸.但这个新掌门能否胜任,仍是众多开发者的心头之虑.通过对VisualStudio 2010的编辑器部 ...

  7. Oracle数据库密码重置、导入导出库命令

    重置办法如下:打开CMD命令提示符,然后输入下面命令进行重置: 输入sqlplus /nolog,回车 SQL> conn /as sysdba 已连接: SQL>alter user s ...

  8. hadoop之文件管理基本操作

    # 格式化hdfs hadoop namenode -format # 查看hadoop下的文件夹 hadoop fs -ls # 创建hdfs文件夹 hadoop fs -mkdir /user/i ...

  9. jQuery框架 的四个入口函数

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. linux 十五个原理知识点

    DNS系统架构与解析原理http协议通信原理TCP/IP的3次握手和四次断开原理MySQL主从同步原理Nginx配合php的fastcgi工作原理Lvs的4种模式工作原理Memcached工作原理(内 ...