PHP基础巩固.docx
《PHP基础巩固.docx》由会员分享,可在线阅读,更多相关《PHP基础巩固.docx(41页珍藏版)》请在冰豆网上搜索。
![PHP基础巩固.docx](https://file1.bdocx.com/fileroot1/2023-2/3/6124847c-b852-4dc1-8585-7b3ae953c79f/6124847c-b852-4dc1-8585-7b3ae953c79f1.gif)
PHP基础巩固
布尔教育_燕十八_PHP基础巩固.001.变量类型
PHP支持八种原始类型(type)。
四种标量类型:
string(字符串)
integer(整型)
float(浮点型,也作double)
boolean(布尔型)
两种复合类型:
array(数组)
object(对象)
两种特殊类型:
resource(资源)
NULL(空)
布尔教育_燕十八_PHP基础巩固.002.变量检测
isset($var);
isset函数是检测变量是否存在。
若变量不存在则返回FALSE
若变量存在且其值为NULL,也返回FALSE
若变量存在且值不为NULL,则返回TURE
同时检查多个变量时,每个单项都符合上一条要求时才返回TRUE,否则结果为FALSE
//NULL是指没有值,也没有类型
$a=NULL;
/*
//CheckVar
isset检测变量是否存在
*/
$a="b";
if(isset($a)){
echo"变量存在";
}
elseecho"变量不存在";
$b="";
if(isset($b)){
echo"变量b存在";
}
elseecho"变量不存在";
$c=NULL;
if(isset($c)){
echo"变量c存在";
}
elseecho"变量不存在";
布尔教育_燕十八_PHP基础巩固.003.变量类型判断
//gettype()获取变量类型
$a='1';
echogettype($a);
echo"
";
$a=1;
echogettype($a);
echo"
";
$a=false;
echogettype($a);
//判断类型
//is_intis_falseis_array
$a=false;
if(is_false($a)){
echo"a是false";
}
elseecho"a不是false";
布尔教育_燕十八_PHP基础巩固.004.打印调试变量
echo字符串
print_r数组
var_dump打印类型及值
****/
//变量打印
$a=1;
echo$a;
$b=array(1,2,3);
print_r($b);
var_dump($b);
$a=false;
var_dump($a);
布尔教育_燕十八_PHP基础巩固.005.变量类型转换
PHP在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。
也就是说,如果把一个字符串值赋给变量 $var , $var 就成了一个字符串。
如果又把一个整型值赋给 $var ,那它就成了一个整数。
PHP的自动类型转换的一个例子是加法运算符“+”。
如果任何一个操作数是浮点数,则所有的操作数都被当成浮点数,结果也是浮点数。
否则操作数会被解释为整数,结果也是整数。
注意这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式本身的类型。
php
$foo = "0" ; // $foo 是字符串 (ASCII 48)
$foo += 2 ; // $foo 现在是一个整数
(2)
$foo = $foo + 1.3 ; // $foo 现在是一个浮点数 (3.3)
$foo = 5 + "10 Little Piggies" ; // $foo 是整数 (15)
$foo = 5 + "10 Small Pigs" ; // $foo 是整数 (15)
?
>
布尔教育_燕十八_PHP基础巩固.006.传值赋值与引用赋值
php
//------------传值赋值(赋值不变)
$a=3;
$b=5;
$b=$a;//把$a所指向的地址里的值复制一份赋给$b地址里
echo$b,"
";//3
//------------引用赋值 (赋值改变,unset()函数无效)
新的变量简单的引用了原始变量,改变新的变量将影响到原始变量使用引用赋值
$a=3;
$b=5;
$b=&$a;//把$a地址赋给$b,这时$b和$a同时指向$a的地址
echo$b,"
";//3
unset($a);//销毁$a的值
echo$b;//3只是销毁了$a的值,但$b的值未销毁,所以$b的值照样存在
布尔教育_燕十八_PHP基础巩固.007.销毁变量
//&$var无效
unset()销毁指定的变量。
unset()在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中unset()一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用unset()之前一样的值。
// 销毁单个变量
unset ( $foo );
// 销毁单个数组元素
unset ( $bar [ 'quux' ]);
// 销毁一个以上的变量
unset( $foo1 , $foo2 , $foo3 );
布尔教育_燕十八_PHP基础巩固.008.动态变量
用变量的值作为变量的名字
$a='abc';
$b='a';
所以
$$b='abc';
布尔教育_燕十八_PHP基础巩固.009.算术运算符
1.算术运算符
除法运算符总是返回浮点数。
只有在下列情况例外:
两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。
取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
取模运算符%的结果和被除数的符号(正负号)相同。
即$a%$b的结果和$a的符号相同。
-$a取反$a的负值。
$a+$b加法$a和$b的和。
$a-$b减法$a和$b的差。
$a*$b乘法$a和$b的积。
$a/$b除法$a除以$b的商。
$a%$b取模$a除以$b的余数。
2.赋值运算符
3.位运算符
4.比较运算符
5.错误控制运算符
6.执行运算符
7.递增/递减运算符
8.逻辑运算符
9.字符串运算符
10.数组运算符
11.类型运算符
布尔教育_燕十八_PHP基础巩固.010.比较运算符
//凡是运算必有运算结果
结果是Boolean型只有true和false
$a=$b//赋值
$a==$b//仅比较结果的值
$a===$b//不仅比较结果,还比较结果的类型
布尔教育_燕十八_PHP基础巩固.011.三元运算符
$a=5;
$b=6;
var_dump(($a>$b)?
$a:
$b);
布尔教育_燕十八_PHP基础巩固.012.逻辑运算符
$aand$bAnd(逻辑与)TRUE,如果$a和$b都为TRUE。
$aor$bOr(逻辑或)TRUE,如果$a或$b任一为TRUE。
$axor$bXor(逻辑异或)TRUE,如果$a或$b任一为TRUE,但不同时是。
!
$aNot(逻辑非)TRUE,如果$a不为TRUE。
$a&&$bAnd(逻辑与)TRUE,如果$a和$b都为TRUE。
$a||$bOr(逻辑或)TRUE,如果$a或$b任一为TRUE。
布尔教育_燕十八_PHP基础巩固.013.递增递减运算符
++$a前加$a的值加一,然后返回$a。
$a++后加返回$a,然后将$a的值加一。
--$a前减$a的值减一,然后返回$a。
$a--后减返回$a,然后将$a的值减一。
$b=5;
$a=$b++;
$c=$b++;
var_dump($a,$b,$c);//5,7,6
$b=5;
$a=$b--;
var_dump($a,$b);//5,4
$b=5;
$a=++$b;
var_dump($a,$b);//6,6
$b=5;
$a=--$b;
var_dump($a,$b);//4,4
布尔教育_燕十八_PHP基础巩固.014.字符串运算符
有两个字符串(string)运算符。
第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。
第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数之后。
更多信息见赋值运算符。
$a="Hello";
$b=$a."World!
";//now$bcontains"HelloWorld!
"
var_dump($b);
$a="Hello";
$b.="World!
";//now$acontains"HelloWorld!
"
var_dump($a,$b);
布尔教育_燕十八_PHP基础巩固.015.赋值运算符
基本的赋值运算符是“=”。
一开始可能会以为它是“等于”,其实不是的。
它实际上意味着把右边表达式的值赋给左边的运算数。
布尔教育_燕十八_PHP基础巩固.016.switchcase控制结构
switchcase适合用在验证多个可能值时使用;
不适合判断范围如:
60-80,;
布尔教育_燕十八_PHP基础巩固.017.while循环
while语句的含意很简单,它告诉PHP只要while表达式的值为TRUE就重复执行嵌套中的循环语句。
表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,
直到本次循环结束。
有时候如果while表达式的值一开始就是FALSE ,则循环语句一次都不会执行。
/* example 1 */
$i = 1 ;
while ( $i < 10 ) {
echo $i ++; /* the printed value would be
$i before the increment
(post-increment) */
}
/* example 2 */
$i = 1 ;
while ( $i < 10 ):
print $i ;
$i ++;
endwhile;
do-while循环和while循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。
总是执行输出第一次结果。
php
$i = 0 ;
do {
echo $i ;//0
} while ( $i > 0 );
?
>
布尔教育_燕十八_PHP基础巩固.018.for循环
循环的一般要素:
初始化
(1),判断
(2),执行体(3),修改变量(4)。
/* example 1 */
for ( $i = 1 ; $i <= 10 ;) {
echo $i ;
$i++;
}
/* example 2 */
for ( $i = 1 ; ; $i ++) {
if ( $i > 10 ) {
break;
}
echo $i ;
}
/* example 3 */
$i = 1 ;
for (;;) {
if ( $i > 10 ) {
break;
}
echo $i ;
$i ++;
}
布尔教育_燕十八_PHP基础巩固.019.break与continue
break结束当前for,foreach,while,do-while或者switch结构的执行。
continue跳过
break结束
布尔教育_燕十八_PHP基础巩固.020.经典实例之过桥问题
一个人身上带有100000块钱过桥,他每次过桥都要缴纳相应的过桥费,
当他身上钱的钱大于50000时,需要扣除5%的过桥费;
当他身上钱少于或者等于50000的时候,需要扣除扣除5000块钱;
请问这个人能过几次桥?
=============for==================
for($i=100000,$cont=0;$i>=5000;){
if($i>=50000){
$i*=0.95;
}else{
$i-=5000;
}
$cont++;
echo"第",$cont,"次过桥,身上剩",$i,"元
";
}
=============while=================
$i=100000;
$cont=0;
while($i>=5000){
if($i>=50000){
$i*=0.95;
$cont++;
}else{
$i-=5000;
$cont++;
}
echo"第",$cont,"次过桥,身上剩",$i,"元
";
}
布尔教育_燕十八_PHP基础巩固.021.经典案例之九九乘法表
//打印九九乘法表
for($i=1;$i<=9;$i++){
for($j=1;$j<=$i;$j++){
echo$i,"X",$j,"=",$i*$j," ";
}
echo"
";
}
布尔教育_燕十八_PHP基础巩固.022.经典案例之百钱买百鸡问题
“今鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
凡百钱买鸡百只,问:
鸡翁、母、雏各几何?
”
用100文钱买来100只鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱3只。
问:
在这100只鸡中,公鸡、母鸡、小鸡各是多少只?
//公鸡最多不超过20只
for($g=1;$g<=20;$g++){
//母鸡最多不超过33只
for($m=1;$m<=33;$m++){
//小鸡等于总数去除公鸡母鸡数的剩余数
$x=100-$g-$m;
//公鸡数+母鸡数+小鸡数=100同时公鸡钱+母鸡钱+小鸡钱=100
if($g+$m+$x==100&&$g*5+$m*3+$x/3==100){
echo"公鸡、母鸡、小鸡各是",$g," ",$m," ",$x,"只
";
}
}
}
布尔教育_燕十八_PHP基础巩固.023.函数概念
一段封装好的代码,可以随时调用
//定义函数
functionqiuhe(){
$c=$a+$b;
return$c;
//调用函数
echoqiuhe(4,6);//10
布尔教育_燕十八_PHP基础巩固.024.函数定义格式
格式:
function函数名字([参数1],参数2,参数N]){
//执行语句
//return结果
}
命名规则:
对于函数,命名规则和变量一样,但是函数不区分大小写
布尔教育_燕十八_PHP基础巩固.025.函数执行与返回流程
函数不调用不会输出结果
函数调用时代码的执行权进入函数
当函数所以语句执行完毕,函数返回,交回执行权
或者函数碰到return语句是,函数返回,提交执行权
return可以1个值或者空值,但是不能返回2个以上的值
布尔教育_燕十八_PHP基础巩固.026.函数传参方式
functiont($a){
$a+=1;
}
$b=3;
t($b);//传参$b,相当于$b的值,赋值给$a,而$a是函数内部的值,怎么变,和外界无关
echo$b;
functiont2(&$a){//不建议使用引用传参,外部函数影响函数内部的值,破坏函数独立封装的特性。
$a+=1;
return$a;
}
$b=5;
echot2($b);//6
echo$b;//6
布尔教育_燕十八_PHP基础巩固.027.函数作用域
functiont($a){
$a+=1;
}
$b=3;
t($b);//传参$b,相当于$b的值,赋值给$a,而$a是函数内部的值,怎么变,和外界无关
echo$b;
//一下两种情况,外部变量可以直接影响函数内部值,
//但是不建议使用,破坏函数的封装性!
!
!
//声明全局变量global
functiont2(){
global$a;
echo$a;
}
echo$a;
//超级全局变量,在页面任何部分,包括函数,方法等,都可以直接访问。
functiont3(){
print_r($_GET);
}
t3();
布尔教育_燕十八_PHP基础巩固.028.动态调用函数
//可以用变量的值当作函数名,并调用函数
functionwel(){
echo'welcome';
}
$hear='wel';
$hear();//$hear的值是wel,所以调用执行wel();
布尔教育_燕十八_PHP基础巩固.029.时间戳函数
//时间戳是指1970010100:
00:
00到现在这一瞬间已经经过的秒数
时间戳存储时间,方便调用时格式化时间
echotime();//返回秒数
print_r(microtime());//返回微秒和秒数
print_r(microtime(true));//返回秒数.微秒
布尔教育_燕十八_PHP基础巩固.030.时间戳格式化
$date();格式化一个本地时间/日期
修改服务器默认时区为东八区的方法:
打开php.ixi修改;date.timezone=UTC为date.timezone=PRC
常用格式参数:
d日[01],j日[1],m月[05],n月[5],M三位数英文缩写月份[May],F完整英文月份[December],
N星期[7],
Y年[1990],y二位数的年[90],h十二小时制度的小时[01],H二十四小时制度的小时[13],
g无前导的十二小时制小时[1],G无前导的二十四小时制小时[13],i分钟[59],秒钟[59],
t月份应有的天数[31],L是否为闰年,a/A小写/大写的上午下午,
z年份中的第几天[200],W年份中的第几周,每周从星期一开始[41]
$time=time();
echo$date('Y-m-d星期Nh:
i:
s',$time);
gmdate();//无视时区返回格林威治时间戳
布尔教育_燕十八_PHP基础巩固.031.日期解析函数
mktime(h,i,s,m,d,y);//取得一个日期的Unix时间戳
echodate("M-d-Y",mktime(0,0,0,1,1,1998));//Jan-01-1998
echodate("M-d-Y",mktime(0,0,0,1,1,98));//Jan-01-1998
strtootime(string$time)//将任何英文文本的日期时间描述解析为Unix时间戳
echostrtotime("now"),"\n";
echostrtotime("10September2000"),"\n";
echostrtotime("+1day"),"\n";
echostrtotime("+1week"),"\n";
echostrtotime("+1week2days4hours2seconds"),"\n";
echostrtotime("nextThursday"),"\n";
echostrtotime("lastMonday"),"\n";
checkdate(m,d,Y);//验证日期有效性
var_dump(checkdate(12,31,2000));//bool(true)
var_dump(checkdate(2,29,2001));//bool(false)
作业
布尔教育_燕十八_PHP基础巩固.032.字符串定义方式
//定义字符串
$str1="helloworld";
//定义一段字符内容HTML可以说容易字符,但是起止符必须一致;
$str2=<<
hello
world
HTML;
布尔教育_燕十八_PHP基础巩固.033.单双引号区别
转义
单引号:
$str1='\'\\\n\t\v\$';//仅能转义少数符号
echo$str1;
双引号:
Sstr2="\"\\\n\t\v\$";//能转义所有符号
echo$str2;
变量解析
$str3="love";
echo"I$str3you";//双引号能解析引号内部的变量
echo'I$str3you';//单引号无法解析引号内变量
速度
单引号比双引号快,因为单引号转义的符号少以及不需要解析内部变量
布尔教育_燕十八_PHP基础巩固.034.字符串常用函数
1、字符串长度函数
strlen:
$str = 'abcdef' ;
echo strlen ( $str ); // 6
$str = ' ab cd ' ;
echo strlen ( $str ); // 7空格算一个字符
$str = '中国' ;
echo strlen ( $str );//6 UTF8编码里,中文占3个字节,GBK编码里占2字节
mb_strlen:
按字符数计算
$str ="中国";
echo mb_strlen ( $str,'utf8');//3空格算一个字符
echo mb_strlen ( $str,'gbk');//2空格算一个字符
2、查找字符串位置函数
strpos:
$mystring = 'abc' ;
$findme = 'a' ;
$pos = strpos ( $mystring , $findme );
// 使用 !
== 操作符。
使用 !
= 不能像我们期待的那样工作,
// 因为 'a' 的位置是 0。
语句 (0 !
= false) 的结果是 false。
if ( $pos !
== false ) {
echo "The string ' $findme ' was found in the string ' $mystring '" ;
echo "