AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
## **一、****php****简介** PHP超文本预处理器。是嵌入HTML文件中的服务器脚本程序。 PHP代码标记: PHP文件的扩展名:.php PHP文件的执行:必须从域名开始访问 PHP每条语句必须以英文(;)结束 ## **二、****php网页基础知识** ## **① ****IP****地址** IP地址分为v4、v6两个版本,v4长度为32位2进制码,v6为128位2进制码。v4版本IP在2010年左右已经用完,主要格式是192.168.4.238(点分十进制法),由四段组成,每段8位二进制,用十进制表示的取值范围为:0-255 **特殊****IP**:127.0.0.1用于本机的软件测试或网站测试,只能自己访问自己的127。 ## **② ****域名解析器(****DNS****服务器)** 可以理解为,储存了域名与IP地址对应表的数据库 本地的DNS:hosts文件,一个隐藏的系统文件,没有扩展名。当在浏览器中输入域名时,首先在本地DNS查找有无对应IP然后才在外网DNS查找对应IP。hosts文件的路径:C:\\Windows\\System32\\drivers\\etc\\hosts ## **③ ****域名解析,访问流程图** ![](https://images2015.cnblogs.com/blog/1071151/201707/1071151-20170723093610746-1462936345.png) ## **三、****php****基础语法** ## **① **** php****变量** php变量必须以”$”开头,例如:$name、$age    不能以数字开头,最后按照驼峰命名法    写在””引号中的变量最好用 { } 括起来,以免出现末端有字符不解析的情况 ## **② ****php****数据类型** **标量数据类型:**字符串型、整型、浮点型、布尔型   **复合数据类型:**数组、对象   **特殊数据类型:**资源、NULL ### **(1)****整型** 取值范围:-21亿~21亿 ### **(2)****浮点型****(可以包含整数)** 取值范围:-1.7E-308~1.7E+308 由于浮点数不能转换成精确的二进制,所以有时在运输时会出现错误,例如:(0.7+0.1)\*10==8 结果为false ### **(3)****字符串型****(在引号中,解析变量,需在变量后加上符合或者空格)** 1. 双引号“” 双引号内解析变量的值 1. 单引号‘’ 单引号内解析变量的名,直接在客户端显示$name 1. 长字符串 $Str = <<<heredoc   “heredoc”的名字可以随意取,按照变量命名规则  ……. 填写字符串内容 heredoc;   结尾“heredoc”必须另起一行,分号结束 ### **(4)****资源型** 对第三方插件等的操作,如调用mysql数据库等,第三方的内容称之为资源 ### **(5)****布尔型** 只有true或false两种类型值 ### **(6)****NULL****(空型)** 如果变量不存在,返回NULL,空型只有一个值,就是NULL ### **(7)****数组****(一组数的集合,通过索引查找元素)** #### **a )****数组的分类:** #### **1. ****索引数组****(与****js****数组基本相同)** 数组的**下标是从****0****开始的正整数**,这样的数组称为“索引数组” $arr=array(10,20,30,40); $arr\[0\]=10; **2.****关联数组** 数组的**下标是字符串**,这样的数组称为“关联数组” $arr=array(“name”=>”Tabb”,”sex”=>”gender”,”age”=>”22”); 由于关联数组没有整数型下标,所以不适合使用for循环来遍历 **3. ****混合数组** 数组下标既有整型,也有字符串,这样的数组称为“混合数组” $arr = array("name" => "tabb", "age" => "20",**"tom", 20**); echo $arr\[0\] 输出结果为“tom”;说明整型下标是从”tom”开始计算的 #### **b )****数组的创建:** **1.****使用****array()****函数创建数组:** 通过“=>”重载符号给数组元素指定下标 如果数组元素没有指定下标,其下标为,当前最大索引+1,示例: $arr=array(20=>”tabb”,2=>”28”,20,”tom”) 其中”20”的索引为21,如果都是字符下标,那么没有指定下标的元素,索引从0开始 使用array创建数组: $arr = array(\[$key=>\]$value,\[$key=>\]$value,…); **2.****使用****\[ \]****中括号创建数组** $arr\[“key”\]=$value 不像js,可以不用先声明一个空数组,如果指定的数组不存在,会自动创建数组         \[ \] 中括号内容为空时,创建数组         $arr\[ \]=30; 如果数组不存在,就会创建一个数组,并添加第一个元素 如果数组存在,添加数组的元素的下标,是数组中的最大整形下标+1 #### **c )****多维数组:** array(array(1,2,3,4),1,2,3,array(1,2,3,4)) 使用\[ \]中括号可以快速创建多维数组: $arr\[ \]\[ \]\[ \]\[ \]=10; 快速创建一个4维数组 #### **d )****数组相关函数:** #### **1. ****print\_r ( )** 打印关于变量的易于理解的信息 如果给出的数组或者对象,按照一定格式显示键和元素 **2. ****unset ( )** 删除数组元素,删除的是数组元素的值,下标还存在,不同于js的长度不变,此处删除元素后,数组长度发生变化 删除变量 **3. ****count ( )** 计算数组中的单元数目或对象中的属性个数 **4. ****foreach ( ) ****只能用于遍历数组** foreach( $arr as \[$key=>\]$value ){ } 如果是索引数组,\[$key=>\]这个内容可以不要 ## **③ ****php****数据类型判断** **(1) ****var\_dump()** 打印变量的相关信息,可以打印多个变量,用”,”逗号隔开 **(2) ****is\_\*() ****一组判断变量类型的方法,返回一个布尔值** 1. is\_bool():判断变量是不是布尔型 2. is\_int():判断变量是不是整型 3. is\_float ():判断变量是不是浮点型 4. is\_numeric():判断变量是不是数值型 5. is\_string():判断变量是不是字符串型 6. is\_array():判断变量是不是数组型 7. is\_object():判断变量是不是对象型 8. is\_null():判断变量是不是空型 9. is\_resource():判断变量是不是资源型 …… **(3) ****isset()** 检测变量是否设置 返回值:如果变量存在,且不等于NULL,返回true,否则,返回false **(4) ****empty ( )** 检测一个变量是否为空,例如””,0,”0”,null,array(),var $var 以及没有任何属性的对象都将被认为是空,如果为空,返回值TRUE ## **④ ****数据类型的转换** **(****1****)转换为****bool****值****(bool)** $a = "0"; $result =**(bool)**$a; var\_dump($result)  结果为: bool(false) 这些数据转换为bool值时为false:0、0.0、””、”0”、array()、null 资源类型转换为bool永远为true **(****2****)转换为整型数值****(int)  (int)$name** 1.如果以数值开头的字符串,将整型部分转换为整型数值,去除后面的字符 2.如果不是数值开头的字符串,转换为0 3.bool值true转换为1,false转换为0,null转换为0 **(****3****)转换为浮点数值****(float)  (float)$name** 1.如果以数值开头的字符串,将数字部分转换为数值(包含浮点部分),去除后面的字符 2.如果不是数值开头的字符串,转换为0 3.bool值true转换为1,false转换为0,null转换为0 **(****4****)转换为字符串****(string)  (string)$name** 1.null、false转换为””,空字符串 2.true转换为字符串“1” ## **⑤ ****php****运算符** **(****1****)数值运算符(****+****、****\-****、****/****、****\*****、****%****、****++****、****\--****)** 使用方法与js中的使用方法基本相同 **(****2****)字符串运算符** “.”点运算符表示字符串链接符,与js中用”+”号拼接字符串类似 $a=”abc”; $b=$a.100  或者使用”.=”表示自己与自己链接字符串:$a.=100 **(****3****)赋值运算符(****\=****、****+=****、****\-=****、****\*=****、****/=****、****%=****)与****js****基本相同** **(****4****)比较运算符(****\>****、****=****、****<=****、****\==****、****!=****、****\===****、****!==****)与****js****基本相同** 举例:10==“10px”  结果为:true;在包含数字的运算中“10px”会先转换为数值 举例:10===“10px”  结果为:false; 全等比较,包括数据类型 **(5)   ****逻辑运算符(****&&****、****||****、****!****)与****js****基本相同** **(6)   ****三元运算符(表达式?结果****1****:结果****2****)与****js****基本相同** **(7)   ****运算符优先级**  ![](https://images2015.cnblogs.com/blog/1071151/201707/1071151-20170723094142934-367953658.png) ## **⑥ ****php****获取表单数据**     用户名: 密码:   //隐藏域,向后端传递信息     (1) **超全局数组变量:****$\_GET\[ \]** 获取get方法提交的数据,存放到GET数组中  array(2) { \["username"\]=> string(6) "abcdef" \["password"\]=> string(5) "12345" } 获取其中的数据示例:$username=$\_GET\[“name”\] (2) **超全局数组变量:****$\_POST\[ \]** 获取post方法提交的数据,存放到POST数组中 ## **⑦ ****php****中的条件判断****if****和****switch****与****js****基本相同** switch比if的效率高,主要用于取值判断 ## **⑧ ****php****中的循环语句** (1)while(条件判断){ break } **与****js****基本相同** (2)for(条件判断){ } **与****js****基本相同** (3)break语句 可以添加break 2表示跳出两层循环 (4)continue语句 跳出本次循环,直接开始下次循环 ## **⑨ ****php****中的拷贝传值和引用传地址** **(1) ****拷贝传值** 将一个变量的值,“复制”一份,传递给另一个变量,这两个变量之间没有关系,是相互独立的两个变量,修改其中一个变量,另一个变量不会变 **php****中属于拷贝传值的数据类型为:字符型、整型、浮点型、****NULL****、数组** **(2) ****引用传地址** 将一个变量的数据地址,“复制”一份,传递给另一个变量,这两个变量指向的是“同一标物”,如果这个”标物”发送变化,两个变量都会发送变化。所以修改一个变量的值,则另一个变量也会发生变化。 **php****中属于引用传地址的数据类型为:对象、资源** **手动声明引用传地址:**在引用变量前,加上“&”符号即可,这样可以使所有的数据类型实现引用传地址,示例如下 $a=10;  $b=&$a;  这样即是把$a的引用地址传地给了$b ## **⑩ ****php****中的函数****与****js****基本相同** 示例如下: function name ($name) {  //函数名不能相同,只能唯一存在,且不带$符号           echo “{$name}的年龄是20”;     return; } **(****1****)函数的参数可以传递引用地址:** function test ( &$a,$b ){  //此处传递的是$a的引用路径           $arr\[ \]=$abc; } **(****2****)函数的作用域:** **全局变量:**在函数外部定义的变量,网页执行完消失 **局部变量:**在函数内部定义的变量,函数执行完消失 不同与js,在php中,全局变量不能直接在函数内部使用 **在****php****函数中使用****global****关键字声明全局变量** 使用global关键字,可以将一个变量,声明为全局变量,这里的全局变量不是js中认为的全局变量 **global****关键字的使用:** 1. global关键字,只能在函数内部使用。 2. global关键字,不能一边声明全局变量,一边赋值。不能有这样的写法: global $a=10; 1. global的真正含义,是“引用传地址”,与js中的全局变量不同 **(****3****)****php****日期时间函数:** **1\. date( );** echo date(“Y-m-d H:i:s”);   输出时间,可改为Y年m月d日 **2\. time( );   ****时间戳****   1970****年到当前的秒数(****js****是毫秒)** **(****4****)****include****语法结构** **描述:**包含并运行指定文件 **语法:****include $filename****或者****include($filename);**        **示例:****include “include/conn.php”;** **(****5****)****requrie****语法结构** **描述:**包含并运行指定文件 **语法:****requrie $filename****或者****requrie ($filename);**        **示例:****requrie “include/conn.php”;** **注意:**include与require都是包含并运行文件,但是是有区别的。如果包含的文件不存在,include将报一个警告错误,脚本继续向下运行。而require将报一个致命错误,脚本将立即终止执行。 **(****6****)****header()** **描述:**发送一个自定义的http报文,即:php返回的数据格式或字符集 **语法:****void header( string $string)**        **示例:** ※ **header(“content-type:text/html;charset=utf-8”);** ※ **header(“location:http:www.baidu.com”);  //****网页跳转**