### PHP 基础
- 简述 PHP
> PHP 是一个基于 __服务端__ 来创建 __动态网站__ 的脚本语言,可以结合 HTML 来生成主页;
- PHP 的八种类型
> boolean(布尔值)、integer(整型)、float(浮点型)、string(字符串)、array(数组)、object(对象)、null、resource(资源);
- 以下预定义全局变量的作用
```
// 当前运行脚本所在目录的根目录
$_SERVER['DOCUMENT_ROOT'];
// 当前请求 Host 头部的内容
$_SERVER['HTTP_HOST'];
// 当前请求用户的 ip
$_SERVER['REMOTE_ADDR'];
// 链接到当前页面的前一页的 url 地址
$_SERVER['HTTP_REFERER'];
// 当前服务器的名称
$_SERVER['SERVER_NAME'];
// 上传文件的所有信息
$_FILE;
```
- 比较```include()```和```require()```
> 两者最大的区别就是对包含文件需求程度;
> - ```include()``` 就是包含,如果包含的文件不存在,会提示一个错误,但是程序仍然往下执行;
> - ```require()``` 是需要,如果包含的文件不存在,则报出一个致命的错误,程序也会终止执行;
> - ```include()``` 执行文件时,每次都要读取和评估;```require()``` 文件只处理一次;如果大量代码只读取一个文件 ```require()``` 效率更高,读取多个文件 ```include()``` 效率更高;
> - ```include_once()``` 和 ```require_once()``` 都是包含一次,避免重复包含;
- POST 和 GET 的最大传输容量分别是多少?
> POST 是根据 php.ini 文件配置的(默认是 8M);
> GET 一般大小限制在 2kb;
> *一般来说 get/post 是没有长度限制的,主要的限制是来源于 __浏览器__ 和 __服务器__*
> 区别:
>- get 可以被 cache ,而 post 不能被缓存;
>- get 请求有长度的限制,post 理论上是没有长度的限制的;
>- get 提交的数据较小,一般是 2k ~ 8k ,而 post 提交的数据较大,大小是根据服务器设定来的;
- 如何判断接收的数据是 POST 还是 GET
> ```$_SERVER['REQUEST_METHOD']```
- ```echo```、```print```、```print_r```的区别
> ```echo``` 是一个语言结构,输出一个或者多个字符串;
> ``` print()``` 输出一个字符串;
> ```print_r()``` 是一个函数,打印的是变量的信息,对象、数组等
- 传值赋值和引用赋值的区别
> 传值赋值是将内容复制一份,修改其中一个变量另一个变量不会受到影响;引用是将两个变量指向同一个内存空间,其中一个变量改变会影响到另一个变量;
> 引用赋值使用 ```&```
- 将 1234567890 修改成 1,234,567,890
>```$a = '1234567890';
$b = strrev($a); // 翻转字符串
$c = chunk_split($b, 3, ','); // 分割字符串
$d = strrev($c);
$e = substr($d, 1);// 截取字符串
// $e = ltrim($d, ','); // 删除字符串开头的空白字符(或其他字符)
echo $e . PHP_EOL;
```