zl程序教程

您现在的位置是:首页 >  后端

当前栏目

PHP和Mysqlweb应用开发核心技术-第1部分Php基础-2php语言介绍

PHP应用基础语言开发 介绍 部分 核心技术
2023-06-13 09:14:29 时间
主要主题是
.php字符串中的变量扩展系统
.php中可用的更多数据类型
.类型之间的转换
.输入和使用变量和常量
.如何在php中构建表达式以及构建表达式所需的操作符
.使用语言中可用的控制结构
.1输入字符串的更多介绍

复制代码代码如下:

<?php
$hour=16;
$kilometres=4;
$content="cookie";
echo"4pmin24hourtimeis{$hour}00hours.<br/>\n";
echo<<<DONE
Thereare{$kilometres}000min{$kilometres}km.<br/>
Thejarisnow,indeed,fullof${content}s.<br/>
DONE;
?>

输出:4pmin24hourtimeis1600hours.
Thereare4000min4km.
Thejarisnow,indeed,fullofcookies.
如果你希望在输出中生成确切的字符序列{$,就需要使用,{\$对它进行转义。
.2数据类型的更多介绍
1.数组:使用array方法来声明数组。它获得一组初始值并且返回保存所有这些值的数组对象,在默认情况下,把从0开始的整数名称或者键(key)赋给数组中的值
,也可以指定要添加的新项的索引。$frunit[120]="nespola";但是你也可以使用字符串值指定键,而不使用赋值给它的默认数字。
$myfavourite=array("car"=>"ferrari","number“=>21,"city"=>"ouagadougou");

数组运算符例子名称结果
$a+$b联合$a和$b的联合。
$a==$b相等如果$a和$b具有相同的键/值对则为TRUE。
$a===$b全等如果$a和$b具有相同的键/值对并且顺序和类型都相同则为TRUE。
$a!=$b不等如果$a不等于$b则为TRUE。
$a<>$b不等如果$a不等于$b则为TRUE。
$a!==$b

复制代码代码如下:

<?php
$a=array("a"=>"apple","b"=>"banana");
$b=array("a"=>"pear","b"=>"strawberry","c"=>"cherry");
$c=$a+$b;//Unionof$aand$b
echo"Unionof\$aand\$b:\n";
var_dump($c);
$c=$b+$a;//Unionof$band$a
echo"Unionof\$band\$a:\n";
var_dump($c);
?>

执行后,此脚本会显示:
Unionof$aand$b:array(3){["a"]=>string(5)"apple"["b"]=>string(6)"banana"["c"]=>string(6)"cherry"}Unionof$band$a:array(3){["a"]=>string(4)"pear"["b"]=>string(10)"strawberry"["c"]=>string(6)"cherry"}2.2.2对象将在第四单元中面向对象的程序设计中使用。2.2.3特殊类型和值NULL是php中的特殊类型和值,它表示"无值".符合如下要求它就是null:.它们被设置为区分大小写的关键字null;.它们从没有赋值过.使用unset方法明确清除了它们。资源:有时候,php需要处理不一定来自php的对象,比如数据库或者操作系统对象的句柄。它们称为资源的特殊变量.
.3强制类型转换
2.3.1基础
隐式强制类型转换:当遇见隐式强制类型转换的最常见的情况是:
.二进制运算操作符
.布尔表达式和表达式操作符
.需要字符串的特定方法--特定方法和操作符,比如echo\print或者字符串连接符(.)
显示强制类型转换:为变量(或表达式)加上括号括起来的类型前缀,php会试图替你进行转换.
(int)\(interger)
(string)-转换为文本字符串
(object)-转换为对象
2.3.2特殊强制类型转换
转换为整数
(int)4.999
注:null永远都转换为整数值0.
转换为浮点数
(float)true=1.0
把数组、对象或者资源转换为浮点值的结果是未定义的,不要试图进行这新的转换或者相信这样的转换结果
转换为字符串
可使用类型转换符(string)或调用strval把变量转换为字符串.
布尔型true转为字符串1,false被转换空字符串("")
null转为空字符串("").
转换为数组
可使用类型转换(array)或者函数arraryr把变量或者表达式转换为数组
null和其他未设置的变量被转换为有0个元素的空数组
转换为对象
你可以使用类型转换(object)把变量或者表达式转换为对象。
把对象转换为对象仅仅返回相同对象的句柄。为所有其他类型创建stdClass类型的对象。
2.3.3有用的强制类型转换函数
is_type()
.is_integer,.is_float,.is_bool,is_null,.is_object.返回布尔型,指出特定变量是否属于适当的类型。
gettype()是非常有用的例程,它告诉你php当前认为变量或者表达式是什么类型。不推荐使用这个转换函数。
settype()使用两个参数:要转换的变量和要转换为的类型,它表示字符串。
.4变量和常量
2.4.1定义常量
在php程序中,使用语言结构define定义常量,常量名子不以字符$开头,并且它们的值只能是特定类型:整数、浮点数、字符串和布尔型
2.4.2按值和按引用的变量
默认情况下,大多数变量和所有常量是按值赋值的。把一个变量的值赋给另一个变量是时,其值被复制。这种方式对于除对象外的所有类型适用
对于对象变量和资源,被复制的全部内容是底层对象或资源的句柄,但是操作的底层对象是相同的。
把变量的值赋值给另一个变量的另一种选择方式是按引用赋值。用&前缀完成的。
$a=123;
$b=&$a;
2.4.3变量的范围
函数级别的变量,内部声明的变量只在这个函数内部是合法的。
在函数外声明的变量
超级全局变量
2.4.4变量的生存期
不管执行相同脚本还是不同脚本,php都不会在调用之间记忆任何内容。
2.4.5预定义变量
php提供很多预定义变量,它们给出操作环境的信息,大多是超级全局数组例如:
$GLOBALS-它包含正在执行的脚本内部全局可用的所有变量的引用
$_SERVER-脚本所在周边环境的信息
$_SESSION、$_COOKIE-它包含管理访问者和关于称为"cookie“的存储方式的信息
$_REQUEST-它包含$_post、$_GET和$_session数组
$_ENV-它包含php语言引擎所在的进程的环境变量.数组的键是环境变量的名称。
$php_errormsg-它保存php语言引擎在执行当前脚本时生成的最新的错误信息.
.5表达式和操作符
2.5.1操作符:组合表达式
赋值:
算术操作符
例子名称结果
-$a取反$a的负值。
$a+$b加法$a和$b的和。
$a-$b减法$a和$b的差。
$a*$b乘法$a和$b的积。
$a/$b除法$a除以$b的商。
$a%$b取模$a除以$b的余数。
比较操作符

例子名称结果
$a==$b等于TRUE,如果$a等于$b。
$a===$b全等TRUE,如果$a等于$b,并且它们的类型也相同。(PHP4引进)
$a!=$b不等TRUE,如果$a不等于$b。
$a<>$b不等TRUE,如果$a不等于$b。
$a!==$b非全等TRUE,如果$a不等于$b,或者它们的类型不同。(PHP4引进)
$a<$b小与TRUE,如果$a严格小于$b。
$a>$b大于TRUE,如果$a严格$b。
$a<=$b小于等于TRUE,如果$a小于或者等于$b。
$a>=$b大于等于TRUE,如果$a大于或者等于$b。
逻辑操作符
例子名称结果
$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。
按位操作符

操作符名称结果
$a&$bAnd(按位与)将把$a和$b中都为1的位设为1。
$a||$bOr(按位或)将把$a或者$b中为1的位设为1。
xor^$bXor(按位异或)将把$a和$b中不同的位设为1。
Not$aNot(按位非)将$a中为0的位设为1,反之亦然。
$a<<$bShiftleft(左移)将$a中的位向左移动$b次(每一次移动都表示“乘以2”)。
$a>>$bShiftright(右移)将$a中的位向右移动$b次(每一次移动都表示“除以2”)。
字符串操作符
连接操作符.它对两个字符串进行操作,并且返回把二者连接在一起的单一字符串
数组操作符

例子名称结果
$a+$b联合$a和$b的联合。
$a==$b相等如果$a和$b具有相同的键/值对则为TRUE。
$a===$b全等如果$a和$b具有相同的键/值对并且顺序和类型都相同则为TRUE。
$a!=$b不等如果$a不等于$b则为TRUE。
$a<>$b不等如果$a不等于$b则为TRUE。
$a!==$b不全等如果$a不全等于$b则为TRUE。
其他操作符
自动递增和自动递减操作符
$a=10;
$b=$a++;b=10,a=11;
$c=++$a;c=12,a=12;
$d=$a--;d=12,a=11;
$e=--$a;e=10,a=10;
还有一个称为@a的操作符,它让php忽略特定函数调用的失败。
最后一个操作符-外壳命令执行程序。为了它,需要把命令括在反撇号(`)之间,这样命令就被传递给处壳执行.但这样会产生安全。
2.5.2组合表达式和操作符的过程

结合方向运算符附加信息
非结合clonenewclone和new
左[array()
非结合++--递增/递减运算符
非结合~-(int)(float)(string)(array)(object)(bool)@类型
非结合instanceof类型
右结合!逻辑操作符
左*/%算术运算符
左+-.算术运算符和字符串运算符
左<<>>位运算符
非结合<<=>>=<>比较运算符
非结合==!====!==比较运算符
左&位运算符和引用
左^位运算符
左|位运算符
左&&逻辑运算符
左||逻辑运算符
左?:三元运算符
右=+=-=*=/=.=%=&=|=^=<<=>>=赋值运算符
左and逻辑运算符
左xor逻辑运算符
左or逻辑运算符
左,多处用到
.6控制结构
2.6.1if语句
1.if(expr)
statement
else
2.elseif/elseif2.6.2switch语句
复制代码代码如下:
<?php
if($a==5):
echo"aequals5";
echo"...";
elseif($a==6):
echo"aequals6";
echo"!!!";
else:
echo"aisneither5nor6";
endif;
?>

switch语句和具有同样表达式的一系列的IF语句相似。很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码。  这正是switch语句的用途。
复制代码代码如下:
<?php
if($i==0){
echo"iequals0";
}elseif($i==1){
echo"iequals1";
}elseif($i==2){
echo"iequals2";
}
switch($i){
case0:
echo"iequals0";
break;
case1:
echo"iequals1";
break;
case2:
echo"iequals2";
break;
}
?>

2.6.3while/do....while循环
while(expr)
block
do
block
while(expr);

复制代码代码如下:
<?php
do{
if($i<5){
echo"iisnotbigenough";
break;
}
$i*=$factor;
if($i<$minimum_limit){
break;
}
echo"iisok";
/*processi*/
}while(0);
?>

2.6.4for循环
for(expr1;expr2;expr3)
block
expr1:当第一次遇到FOR循环执行它一次。执行完毕后开始循环迭代。
expr2:在每次迭代之前计算它。如为true,就执行代码块。
expr3-在每次迭代之后计算它
复制代码代码如下:
<?php
/*example1*/
for($i=1;$i<=10;$i++){
echo$i;
}
/*example2*/
for($i=1;;$i++){
if($i>10){
break;
}
echo$i;
}
/*example3*/
$i=1;
for(;;){
if($i>10){
break;
}
echo$i;
$i++;
}
/*example4*/
for($i=1,$j=0;$i<=10;$j+=$i,print$i,$i++);
?>

2.6.5foreach循环:用于特定类型。在5单元中进行更多讲解
2.6.6中断循环:break和continue