PHP是服务器端运行的开源脚本语言
LAMP组合
wamp组合:windows+apche+mysql+php
1.静态页面 服务器不执行的页面
2.动态页面 服务器执行的页面
客户端和服务器端
BS架构和CS架构
前台和后台
PHP的优点
? 1.跨平台
? 2.源码开放
? 3.语法简单
? 4.运行在服务器端,部署简单
常用命令:
? http -v 查看版本号 version
? httpd -t 检测运行环境 test
? php -v
互联网的通讯原理
服务器配置
? 1.虚拟目录配置 conf/httpd.conf
? 2.更改默认首页
? 3.更改监听端口
查看哪个端口被占用命令:
netstat -ano 端口占用情况
在结果中查找字符串
? netstat -ano |findstr 80
补充:站点、虚拟目录、虚拟主机的区别
站点:就是一个文件夹,用来保存与网站相关的元素以及素材
虚拟目录:站点+权限
虚拟主机:虚拟目录+域名
PHP是编译型语言
//这是单行注释
#这也是单行注释
/* 多行注释*/
echo ‘锄禾日当午‘;
print (汗滴禾下土!); *//输出,输出成功返回1*
print_r(); *// 输出数组*
var_dump(): *//输出数据的详细信息,并且带有类型及长度*
//可变变量:将变量名存储在另外一个变量中
$name1 = ‘tom‘;
$name2 = ‘berry‘;
*if*(rand(1,10)%2){
? $name = ‘name1‘;
}*else*{
? $name = ‘name2‘;
}
echo $$name;
//变量传递有值传递和地址传递(引用传递)
//$1a 不合法*
//值传递
$num1=10;
$num2=$num1;
$num2=20;
echo $num1; *//10*
//地址传递
$num1=10;
$num2=&$num1; *//将num1的地址传递给num1*
$num2=20;
echo $num1; *//20*
小结:
1、参数的传递有两种,值传递和地址传递
2、&表示获取变量的地址
3、值传递中,一个变量变了,另一个变量没有影响,因为是两个空间
4、地址传递中,一个变量变了,另一个变量也变了,因为两个为变量指向的是同一空间
//销毁变量
//用unset()来销毁变量,销毁的是变量名,变量值由PHP垃圾回收机制销毁
$num1=10;
$num2=&$num1;
unset($num1); *//销毁的是变量名*
echo $num2; *//10*
//没有变量引用的值就是垃圾
常量:固定不变的值
定义常量
1、用define()函数定义常量
define(常量名,值,是否区分大小写)
2、常量名没有$符号
3、推荐常量名用大写
define(‘NAME‘,‘tom‘); *// 定义常量*
define(‘PI‘, 3.14,true); *//不区分大小写*
echo NAME,PI;
2、定义常量可以用特殊字符,但是在强调的时候必须用const关键字定义常量
const NAME=‘tom‘;
echo constant(‘%-%‘); *//通过constant获取特殊字符作为常量名的变量*
3、判断常量是否定义,通过define()判断常量是否已经定义
if*(!defined(‘NAME‘)){
define(‘NAME‘,‘berry‘);
}
echo NAME; *//berry*
4、还可以通过const关键字定义常量
const NAME=‘tom‘;
echo NAME; *//tom*
小结:
1、定义常量有两种方式,define()和const
2、常量在整个运行过程中值保持不变,常量不能重新定义
3、使用constant获取特殊字符做的常量名的值
4、defined()用来判断常量是否已经被定义
预定义常量
数据类型(弱类型)
1、整形 进制之间的转换以及函数
2、浮点型 浮点数在内存中保存的是近似值 浮点数不能参与比较
如果浮点数要比较,必须要确定比较的位数
3、布尔值
? 不能使用echo和print输出布尔值,要使用var_dump输出
$flag=flase;
var_dump($flag); *//bool(false)*
4、字符串型
在PHP中单引号字符串和双引号字符串是有区别的
单引号字符串是真正的字符串
双引号字符串要解析字符串中的变量
输出特殊字符串要转义
字符串定界符
? 1.有<<<开头,后面跟的是标识符
? 2.字符串定界符的结束符必须顶格写,前面不能有任何的空白字符
? 3.字符串定界符分为两种,heredoc(双引号),nowdoc(单引号)
复合类型
1.数组
? 在PHP中数组有两种形式,索引数组和关联数组
? 索引数组:用整数做下标,默认从0开始,后面依次加1
? 关联数组:用字符串做下标,通过=>符号将下标和值关联起来
? 二维数组的声明
? 字符串可以通过数组去调用
echo ‘abc‘[0],‘<br>‘; //a
echo ‘abc‘[-1],‘<br>‘; //c,从右边开始取第一个
小结:
? 1.数组在内存中连续一段的空间
? 2.如果要保存同一类的多个数据就使用数组
2.对象
3.特殊类型
? 1.资源
? 2.null
4.类型转换
? 1.自动类型转换:当提供的类型和需要的类型不一样时会进行自动类型转换
? 2.强制类型转换
? (数据类型) 数据
? 3.其他类型和布尔类型之间的转换 ***
? 规则:0、空为假,非0非空为真
运算符
1.算术运算符
? 1.一元运算符 ++ --
? 2.二元运算符 + - * /
? 注意:在PHP中,算术运算符只能做数学运算。
? echo ‘10‘+‘20‘,‘<br>‘; //30
? echo ‘10ab‘+‘20cd‘,‘<br>‘; //30
? echo ‘ab10‘+‘cd20‘,‘<br>‘; //0
++前置:先自增在运算
++后置:先运算在自增
2.关系运算符(比较运算符)
? > < <= >= == != === !== 比较运算符的运算结果值是布尔值
3.逻辑运算符
? & 与
? | 或
? ! 非
4.赋值运算符
5.字符串连接符号 .
6.错误抑制符号 @
7.三元运算符(???
? 表达式?值1:值2
8.null合并运算符(??)
两个用来判断的函数
isset():判断变量值是否被设置,并且设置的不是null
empty():检查一个变量是否为空,能转成false全部是空,[‘‘,0,0.0,array(),null]
判断
1.单分支
2.双分支
3.多分支
if(条件){
?
? }elif(条件){ //elif之间没有空格
? }else{
? }
4.多路选择