PHP
-
网页开发——>网站开发——>应用开发
-
后台服务器端编程
-
后台处理结构
- 接收服务器返回的数据
- 渲染(生成图形化界面)
- 二次请求/响应结果
-
服务端编程
- 解析域名
- 获取数据
- 返回页面
-
网站
- 数据动态
- 页面面向所有用户
-
web服务器
- 一台安装特定软件的计算机;web服务器,数据服务器、文件服务器等;
- 客户端:使用服务的设备(网络端点)
-
C/S架构与B/S架构: 浏览器访问/客户端访问
-
IP地址:四个0-255的数字组成
- 作用:标识每台电脑在网络中的唯一位置
-
域名:用来标识IP地址的名称,
- 域名映射ip地址;
- 本机 IP地址127.0.0.1
-
DNS:域名解析服务器
- 映射表
-
hosts文件:本机文件配置,
-
端口:电脑里面程序的标识默认80
-
网络通讯流程
- 域名
- 拿域名访问DNS
- 拿DNS解析出IP地址返回给浏览器
- 浏览器以IP地址找到服务器
- 根据端口在服务器里找到程序
- 开始通讯
-
URL: 统一资源定位符,表示网络中某一个网页的完整访问地址;
- 格式 协议://域名:端口/文件目录?参数/key=value
-
虚拟主机
- 实现通过域名的方式访问服务器的某个子站点
- 配置第一个虚拟主机
- 配置hosts文件 添加
- 修改添加indexes
-
Apache与php
-
php输出语句
- var_dump( )
- print([3,2,1])
- print_r([1,2,3])
- echo(‘a’,‘b’,‘c’)
-
php语法: 弱类型
- 声明并赋值:$age = 20;
- 声明未赋值 返回未null;
- 代码语句加分号;
- php中treu输出为1 false输出为空;
- 相关函数
- isset():判断变量是否存在/定义 返回 true/false
- empty():判断变量是否为空
- unset():删除变量,删除后变量值为空
- 数据类型
- 基本数据类型:string、integer、float、boolean
- 复合数据类型:array、object
- 特殊数据类型:null、资源
- 判断数据类型
- is_string():判断是否为字符串数据类型 其他类型判断通用格式
- 单引号和双引号 区别
- ’ ‘ :不能解析变量
- “ ” :能解析变量 \ " \n \t
-
php中的数组: 本质都是关联数组;
-
索引数组: 不设置key
- $arr = [1,2,3,true,‘abc’];
- count(arr),获取数组长度
-
关联数组:以键值对方式描述数据, 设置key和value
- array( k e y = > key=> key=>value, k e y = > key=> key=>value, k e y = > key=> key=>value…)
- 通过key获取成员 $arr[‘age’]
-
遍历关联数组foreach
- foreach(arr as k e y = > key=> key=>value){ }
-
混合数组
- 如果设置key,就没有索引,否则系统自动生成索引
- 下载索引不会和key相互影响
-
创建数组
- $arr[ ] = 1; 如果不存在arr就创建。存在就追加
- count()获取数组长度
- unset()删除数组元素,其他索引不变,数组长度不变
-
二维数组
$arr = array( first => array( “nam”=>“李白”, “age”=>18 ), array( “nam”=>“露娜” “age”=>20 ) ) $arr = array( array(1,2,3),
array(4,5,6)
);
foreach($arr as $小数组){
// 拿到的每一个数组 $小数组=array(1,2,3) $小数组=array(4,5,6)foreach($小数组 as KaTeX parse error: Expected '}', got 'EOF' at end of input: 值){ //值 = 遍历谁就拿谁的值
}
}
二维数组的直接取值:$arr[0][2] -
7. 数据类型转换
1. 自动转换 “1” + “2”
2. 强制转换 (int)$str,//0
$a = "10"
new_result=(int)a
print_r(a)
print_r($new_result)
$a="abc";
$result=(int)$a;
// 结果为0
```
-
if/for新语法:if(): endif / for(): endfor
if(): else: endif; **************** if(): else if(): else if(): else: endif; **************** for(): 代码 endfor;
-
函数的定义与使用
-
加gloable 声明全局变量
-
超全局变量 $GLOABLES
$a = 10; function show(){ print_r($a); // 无法取值10 } function show(){ //global $a=20; // 报错 不能同时声明又赋值 global $a; $a=20; print_r($a); // 无法取值10 } show() ******************************************************** 超全局变量:$GLOBALS 就是一个数组,把所有的全局变量自动的 添加进数组,以键值对的方式 例子: $a=10; $b=20; function show(){ echo $GLOBALS["a"]; echo $GLOBALS["b"]; }
-
常量的定义与使用
-
定义常量 :define(‘常量名‘,常量值,true/false忽略大小写开关)
-
魔术常量 :这个常量会变化
参数1:字符串 名字 参数2:值 参数3:是否对 名字的 大小写敏感 define("A",15,false) echo a //15 魔术常量: __LINE__ // __FILE__ //所在路径 __DIR__ //所在路径上一层目录 __FUNCTION__ //所在的函数
-
php的载入文件
- include ‘constant.php’; 引入文件;重复载入,重复执行;载入失败不影响后面代码执行。
- include_once 只载入一次
- require 载入失败影响后面代码执行。
- require_once 只载入一次
-
API
- strlen($str):获取字节长度,无法正确处理宽字符集合(php默认不支持的字符)
- UTF-8:一个汉字3个字节;GBK:一个汉字两个字节
- mb_strlen($str) :
-
数组的遍
$数组名=array( "name"=>"张三", "age"=>18, "gender"=>"男 ); 取值: $数组名["name"] 遍历: foreach($数组名 as 变量){ // 变量拿的一定是值 } 混合的数组:??? $数组名=array( "a", "b", "name"=>"张三", "age"=>18, "gender"=>"男", "c" ); 注意:键不占索引位 数组的增加功能?? $arr_1[]="a" $arr_1[]="b" $arr_1["name"]="jack" $arr_1[]="c" unset()删除数组的元素会有什么影响?? unset($arr_1[1]) print_r($arr_1)
-