1. php运行过程时序图
目录 htdocs 目录下一个文件夹,该文件夹中包含各种web资源(html/php/css/js/图片/视频...)
apache和php在网络中的位置
使用uml图,描述了请求php文件的整个流程
.
2 php的基本语法介绍
2.1 php 可以和html代码混合但是一定要使用
<?php
//php代码
?>
可以在php中嵌入html代码
<?php
echo"hello,world";
//写一部分html代码
?>
<h1>hello</h1>
<?php
?>
2. 还可以使用如下方法嵌入 php 代码(脚本)
<scriptlanguage="php">
echo "<br/>测试一下吧!";
</script>
☞这个推荐
3. 如果只是为了显示一个变量的值
<?=变量?>
举例
<?=$i?>
4. php代码注释的方法有
4.1 注释多行
/*
*/
/*echo"<br/>aaaa";
echo "<br/>aaaa";
echo "<br/>aaaa";
echo "<br/>aaaa";
echo "<br/>aaaa"; */
4.2 单行注释
//
php的基本语法加强
Parse : 解析
error :错误
syntax : 语法
① php 可以和html 混合使用
② php 的变量的定义使用
//php中,定义一个变量要以$符号打头
$a=890;//我定义了一个变量,该变量名叫$a , 然后给该变量赋了一个值890
③ php 的变量的数据类型,是变化的,php变量的数据类型是由运行时的上下文决定
④ php区分大小写
$i =89;
$I=90;
$abc=90;
$Abc=900;
⑤ php 的变量的名称,应当以字母或者下划线开头,不要用数字开头,也不要用特殊字符开头.
$3abc=89;
php 数据类型有哪些?
有三大类
1. 基本数据类型
1.1 整型
1.2 小数型(浮动数)包含单精度和双精度
1.3 布尔类型 (表示真,和假)
1.4 字符串
2. 复合数据类型
2.1 数组(array)
2.2 对象 (object)
3. 特殊数据类型
3.1 null
3.2 资源类型(resource)
整型细节说明
基本数据类型的入门案例:
■整型
整数类型可以表示一个整数,比如:
$ts=1; $ts=-12;
■布尔类型
布尔型可以表示真或者假,比如:
$ts=true; $ts=false;
■小数类型
小数类型可以表示一个小数(float,double)
$ts=1.12 $ts=3.1415926
■字符串类型
字符串类型可以表示一个字符串
$ts=“我是一个好人 hello”
基本概念:
何为定义一个变量
<?php
$a=90; //相当于我们定义了一个变量 $a,并赋值90
?>
什么叫给变量赋值
<?php
$a=78;
$a=8; //表示用新的值替代 78
$a=”hello”; //表示$a 的类型变化.
?>
整型的细节讨论
①在php中一个整型数据可以用十进制,也可以用八进制和十六进制
比如:
$a =0123; // 八进制数(是以0开头)
$a =0x1A; // 十六进制数
0123 =3*8的0次方 + 2*8的1次方+ 1*8的二次方
=3*1+2*8+1*64=83
0x1A=A*16的0次方 +1*16的一次方=10+16=26
$a=123=3*10的0次方+2*10的1此方+1*10的二次方=3+20+100=123
② php的整数都是有符号数.
通过该图,我们可以看出,php的整数的二进制的最高位表示符号
③通过 PHP_INT_SIZE
可以显示我们自己的机器,一个整数用几个字节表示
echoPHP_INT_SIZE;
通过PHP_INT_MAX 可以显示int 最大的数有多少
echoPHP_INT_MAX;
请问? 为什么 PHP_INT_MAX是 2147483647
我们一起推一下
请问? php 的int 型,负数最大表示多少?
负数和正数一样大
2的31次方减一
④如果一个整数的范围超过了最大范围,则自动变成float
布尔细节浮点数细节字符串细节算术运算符①\
学生的问题?
$a=2; 问在内存中 2是怎样存在的
00000000 00000000 00000000 00000010 -> 0*2的0次方+1*2的一次方+..0=0+2=2
$a=-2 问在内存中形式
布尔类型
简单的说布尔类型就两个值 true, 一个false;
举例:
//布尔类型
$a=true;
$b=false;
布尔值 FALSE 自身
整型值 0 (零)
浮点型值 0.0 (零)
空字符串, 以及字符串"0"
不包括任何元素的数组
不包括任何成员变量的对象(仅PHP 4.0 适用)
特殊类型NULL (包括尚未设定的变量)
$conn=mysql_connect(“localhost”,”root”,”root”);
if($conn){
echo ‘ok’;
}else{
echo ‘没有ok’;
}
浮点数的细节
1.浮点数(也叫双精度数或实数)
2.浮点数的字长和平台相关,通常最大值是 1.8e308 并具有 14 位十进制数字的精度 (这个限制很重要)
☞精度要从左边开始的第一个非0的数字计算.
字符串的细节
$a=”hello”;
请问 $a 占用了多个是字节 5个字节
一个字符串类型可以表示多大的串?
①理论上,我们对字符串大小没有限制,即只有不超过内存就可.
②我们定义字符串的时候,可以用单引号,也可以使用双引号
区别如下:
$i=90;
$user1="hello$i";
$user2='hello$i';
echo '<br/>user1='.$user1;
echo '<br/>user2='.$user2;
从上面案例我们看出, 当一个变量包含在 “”号中时,会输出它的值,而包含在’’ 中是输出其字符本身.
案例2
如果字符串是包围在单引号(‘)中, 除了来处理
\” 时,会输出 \” 外,其它规则都一样
php数据类型的自动转换
php的表达式
所谓表达式,就是任何有值的东西.
$a=90+89;
php的算术运算符
+ 、 -、*、 / 、%
算术运算符②比较运算符逻辑运算符
php的算术运算符
+ 、 -、*、 / 、%
$a=90;
$b=7;
if($a%$b==0){
echo '能整除';
}else{
echo '不能整除!';
}
++ 和 – 快速入门:
$a=90;
$a++; //等价于$a=$a+1;
echo $a;
$b=89;
$b--; //等价于$b=$b-1;
echo '<br/>'.$b;
细节我们的++和– 分为前++ 后++ , --也分为前-- 和后- -
$a=56;
$b=$a++;
echo$b;
echo$a;
对上面代码的分析如下:
$a=56;
//$b=$a++; //等价于 $b=$a;$a=$a+1;
$b=++$a; //等价于$a=$a+1; $b=$a;
echo $b."||"; //-->$b 57
echo $a; //-->$a 57
左加
+=
左减
-=
左乘
*=
左除
/=
左取模
%=
$a=90;
$a-=90;//$a=$a-90;
echo$a;
比较运算符
案例:
$a=2;
$b=2.0
//只有值相等就为true
if($a==$b){
echo ‘$a==$b’;
}
//全等,要求$a 和 $b 值和类型要相等
if($a== =$b){
}
对 != != = 说明
//只有值不相等,则为true
if($a!=$b){
echo '$a!=$b';
}
//只要值不相等,或者类型不相等,则为true
if($a!==$b){
echo '$a!==$b';
}
请编写一个程序,该程序可以接收两个数(可以是整数,也可是小
数),并判断两个数是大于?小于?还是等于?
对应的案例:
<?php
$a=123;
$b=90;
if($a>$b){
echo '$a>$b';
}
if($a<$b)
{
echo '$a<$b';
}
if($a==$b){
echo '$a==$b';
}
?>
逻辑运算符
要求大家掌握的知识点有:
搞清每个逻辑运算的规则
案例
$a=10;$b=7;
if($a++>8 || $b++>7){
echo 'ok!';
}
echo 'a='.$a.'b='.$b;
//把结果填写
$a=10;$b=7;
if($a++>10 && $b++>7){
echo 'ok!';
}
echo 'a='.$a.'b='.$b;
$a=10;$b=7;
if($a++>18 && $b++>7){
echo 'ok!';
}
echo 'a='.$a.'b='.$b;
☞面试题: and &&都表示逻辑与,他们的区别在什么地方
主要体现在优先级上面
and 的优先级
and<= <&&
or <= < ||
配合案例:
$e =false || true;
$f =false or true;
var_dump($e,$f);
$e 是 true
$f 是false;.....
php基本语法-三元运算符
基本语法
表达式1 ? 表达式2 : 表达式3
规则:
如果表达式1 的运算结果是 true, 则取表达式2 的值,否则,取表达式3的值.
举例:
<?php
$a=90;
$b=180;
$c=$a>$b?(12-10):"hello,world";
echo 'c=='.$c;
?>
php 的字符串运算符
案例:
$a="hello,world";
$b=123;
$c=$b.$a; //$a 具体表示内容和 $b 表示内容拼接
echo $c;
从上面案例我们看出,当两个变量(基本数据类型) 用 . 连接的时候,就表示把他们的内容拼接
类型运算符(了解)
基本语法是: instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例,通常在面向对象开发中可能用的.
class Dog{}
class Cat{}
//创建一个对象
$cat1=new Cat;
//var_dump($cat1 instanceofDog);
//在实际开发中,我们可能需要去判断某个变量是否是某个类型
if($cat1 instanceof Cat){
echo '$cat1 是一只猫';
}
运算符优先级的说明:
//****运算优先级*****
☞如果将来你们有一个表达式很复杂,建议使用() 来指定其运算优先级
$a=3;
$b=++$a*3;
echo $b;
php程序的三大流程控制
① 顺序控制(从上到下,从左到右)
$a=7;
echo “a=”.a;
echo “hello!”;
$a++;
echo “a=”.a;
echo “O(∩_∩)O”;
$a++;
echo “a=”+a;
所谓顺序控制流程,就是不加控制的流程,默认情况,会按照,顺序来执行你编写的代码
② 分支控制
一个简单的定义: 有选择的来执行我们的代码.
分为 1. 单分支 2. 双分支 3 多分支
1. 单分支的基本语法结构
if(条件表达式){
语句;
//...
//....
}
这里我们,这里的条件表达式不管多复杂,最总运算的结果就是 true 或者 false;
快速入门:
编写一个程序,可以输入人的年龄,如果该同志
的年龄大于18岁,则输出 “你年龄大于18,要对
自己的行为负责!”
$age=7;
if($age>18){
echo '你的年龄大于18';
}
2. 双分支
基本语法结构
if(条件表达式){
//n多语句;
}else{
//n多语句;
}
编写一个程序,可以输入人的年龄,如果该同志
的年龄大于18岁,则输出 “你年龄大于18,要对
自己的行为负责!”。否则 ,输出”你的年龄不大
这次放过你了.”
代码:
$age=4;
if($age>18){
echo '你的年龄大于18';
}else{
echo '你的年龄小于18';
}
echo '<br/>程序结束!';
3. 多重分支
基本语法结构是
if(条件表达式){
//n多语句
}else if(条件表达式){
//n 多语句
}else if(条件表示式){
//.
}//这里可能还有更多的else if
else{
}
☞对上面的结构请注意:
(1) else if 可以有一个,也可以有多个
(2) else 可以没有
快速入门案例:
编写一个程序,可以输入人的年龄,如果该同志
的年龄大于18岁,则输出 “你年龄大于18,要对
自己的行为负责,送入监狱”。如果该同志的年
龄大于10岁并且小于等于18,则输出 “你的年龄
也不小了,把你送少管所.”。其它情况,则输出
“小孩子,下次注意”。
代码如下:
$age=34;【1】
if($age>18【2】){
echo'你要被送入监狱';【3】
}elseif($age>10 【4】&& $age<=18【5】){
echo'送入少管所';【6】
}else{
echo'下次注意';【7】
}
echo"over";【8】
流程分析图:
switch分支语句
基本语法结构
switch(表达式){
case 常量1:
//n多语句;
break;
case 常量2:
//n多语句
break;
defual:
//n多语句;
break;
}
☞请注意:
1. case 语句有一到多
2. defaul 语句可以没有(根据自己代码的业务逻辑)
3. 通常,在case 语句后,要带break ,表示退出switch语句
4. 常量的类型 (int, float, 字符串, 布尔型)
快速入门案例:
请编写一个程序,该程序
可以接收一个字符,比如
:a,b,c,d,e,f,g
a表示星期一,b表示星期
二 … 根据用户的输入显
示相依的信息.要求使用
switch 语句完成
$myChar="b";
switch($myChar){
case "a":
echo '今天星期一,猴子穿新衣';
break;
case "b":
echo '今天星期二,猴子当小二';
break;
case "c":
echo '今天星期三,猴子爬雪山';
break;
default:
echo '没有匹配的日期';
}
echo 'okokook';
一个案例:
$i=11;
switch ($i){
case 10:
echo '10';
case 1.3:
echo '11';
break;
default:
echo 'hello';
//break;
case 11:
echo '12';
break;
}
该案例得出一个结论:
//最终的结论是:
首先按照case顺序进行配置,如果一个都没有匹配到,则执行
//default语句的内容,直到遇到break,则退出switch
42讲 循环控制①(for)
学生的问题: 老师,说一下if语句和switch的区别,及应用场景。
回答:从我们学习if 和switch 分支看,if对某个范围的判断,而switch是对一个点的判断, 所以我们可以这样去选择他们:
应用场景: 当我们的分支就是几个点的时候(比如判断坦克的方向),就应当使用swtich,如果你的分支是几个区域(范围)的判断,则考虑使用if
① 循环控制流程
首先说 for 循环控制
基本语法结构
for(循环初值;循环的条件;步长){
//n多语句;
}
为什么需要循环控制 ?
问题:请输出9000000句,”你好,北京”
这样一问题:怎样让我们的某段代码,循环的执行
分析图
for($i=0;$i<2;$i++){
echo '<br/>你好,北京';
}
echo "over";
内存图:
43讲 循环控制②(while dowhile) 打印金字塔案例
更新时间:2012年11月20日11时54分来源:
while循环
基本语法结构是
while(循环条件){
//循环体 ,语句
}
案例: 使用while来打印 10句”你好北京 ”
代码:
//*****while循环*****
$i=0;//$i循环控制变量
while($i<10){
echo '<br/>你好北京'.$i;
//这里我们对循环控制变量,自增.
$i++;
}
流程分析图:
do..while循环控制
基本语法结构
do{
//循环体
}while(循环条件);
快速入门: 循环的显示 10句,”你好北京”;
$i=0;【1】//循环控制变量
do{
echo'<br/>dowhile你好北京'.$i;【2】
//对循环控制变量修改
$i++;【3】//这里有程序员自己控制步长.
}while($i<10【4】);
执行的流程图: