php知识点.docx
《php知识点.docx》由会员分享,可在线阅读,更多相关《php知识点.docx(82页珍藏版)》请在冰豆网上搜索。
php知识点
第一章基本语法
学习要点:
1.ZendStudio两个小问题
2.在Web页面中嵌入PHP代码
3.标识符与变量、常量
4.访问表单变量
1.ZendStudio两个小问题
1.新建文档的模板设置:
Window->Preferences->PHP->Editor->Templates->NewsimplePHPfile
//这个可以修改每次新建文件的起始代码
2.自动提示代码速度很慢:
Window->Preferences->PHP->Editor->ContentAssist->AutoActivation
//将代码自动提示的速度500设置成50
2.在Web页面中嵌入PHP代码
php
echo"
我的第一个PHP程序!
";
?
>
这是一段PHP服务器端脚本,经过服务器解释执行后生成HTML文件!
三、php中的注释:
单行//多行/**/
四、向浏览器输出的几个函数
1.echo()、print()、printf()、sprintf()
2.echo、print、printf本身是函数,即函数()。
但这里的输出函数可以省略括号,用空格+所需显示的字符串或变量。
3.echo和print功能几乎相同,而echo运行速度上比print稍稍快一点。
因为print有返回值。
4.echo不返回任何值(void),print返回的是整型(integer)
5.printf()和sprintf()是C语言模式,例如:
printf("我今天买了%d套视频光盘",5);
他们之间的不同点是,printf返回的是整型(integer),而sprintf返回的字符串(string)
printf可以在浏览器直接输出,而sprintf需要echo将它输出
五、变量
标识符是变量的名称,关于标识符,PHP定义了一些简单的规则:
·标识符可以是任何长度,而且可以由任何字母、数字、下划线组成。
·标识符不能以数字开始。
·在PHP中,标识符是区分大小写的。
·一个变量名称可以与一个函数名称相同。
1.变量赋值:
$sum=0;
$total=1.22;
$sum=$total;
2.变量的数据类型
PHP支持如下所示的基本数据类型:
Integer(整数)、Float(浮点数,也叫Double,双精度)、String(字符串)、Boolean(布尔)、Array(数组)、Object(对象).
3.类型转换
使用类型转换,可以将一个变量或值转换成另一种类型。
$sum=0;
$total=(float)$sum;
4.检测变量
1.大部分的可变函数都是用来测试一个函数的类型的。
PHP中有两个最常见的函数,分别是gettype()得到变量的数据类型和settype()设置变量的数据类型,将原来的数据类型转换为想要的数据类型。
这两个函数返回的数据类型。
2.isset()和unset()用来判断一个变量是否存在,返回的是布尔值true或false。
3.empty()用来判断一个变量的值是否为空,如果为空则为true否则为false。
换句话说,""、0、"0"、NULL、FALSE、array()、var$var;以及没有任何属性的对象都将被认为是空的
4.PHP还提供了一些特定类型的测试函数。
每一个函数都使用一个变量作位其参数,并且返回true或false。
is_array()、is_double()、is_float()、is_real()、is_long()、is_int()、is_integer()、is_string()、is_object()、is_resource()、is_null()、is_numeric()
5.可以通过调用一个函数来实现转换变量数据类型的目的。
intval()、floatval()、strval();
这三个函数用来得到转换后的变量值,原来的变量类型没有改变,他们的参数是变量字符串
六、变量的作用域
1.作用域是指在一个脚本中某个变量在哪些地方可以使用或可见。
2.内置超级全局变量可以在脚本的任何地方使用和可见。
3.常量,一旦被声明,将可以在全局可见。
也就是说,他们可以在函数内外使用。
4.在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部。
5.函数内部使用的变量声明为全局变量时,其名称要与全局变量名称一致。
6.在函数内部创建并被声明为静态的变量无法在函数外部可见,但是可以在函数的多次多次执行过程中保持改值
7.在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。
超级全局变量:
$GLOBALS所有全局变量数组
$_SERVER服务器环境变量数组
$_GET通过GET方法传递给该脚本的变量数组
$_POST通过POST方法传递给该脚本的变量数组
$_COOKIEcookie变量数组
$_FILES与文件上载相关的变量数组
$_ENV环境变量数组
$_REQUEST所有用户输入的变量数组
$_SESSION会话变量数组
七常量
1.常量一旦被定义之后,就不能再次更改。
语法:
define("大写的常量名",常量值);
2.除了自定义常量外,PHP还预定了许多常量。
了解这些常量的简单方法就是运行phpinfo()命令。
3.变量和常量的另一个差异在于常量只可以保存布尔值、整数、浮点数或字符串数据。
这些类型都是标量数据。
八、访问表单变量
在PHP脚本中,可以以PHP变量的形式访问每一个表单域,其中PHP变量名称必须与表单域的名称一致。
你可以很容易识别PHP的变量名称,因为他们都是以$符号开始的。
(漏掉这个$符号是一个常见的编程错误。
)
根据PHP版本和设置的不同,通过变量,可以有3种方法来访问表单数据。
这些方法并没有正式的名称,因此我们给他们定义了3个昵称,分别是简短风格、中等风格和冗长风格。
在任何情况下,一个页面上提交给PHP脚本的每一个表单域在PHP脚本中都是可以使用的。
$userName//简短风格
$_POST["userName"]//中等风格$_Get["QQName"];
·简短风格:
非常方便,但容易引起混淆,不推荐
·中等风格:
4.1.0版后支持,推荐的
字符串连接:
使用点就可以连接".";
第二章操作符与控制结构
学习要点:
1.字符串插入
2.操作符
3.控制结构
1.字符串插入
为了给开发人员处理字符串值提供最大的灵活性,PHP为字面插入和内容插入提供了一种方法。
双引号提供了最大的灵活性,原因是变量和转移序列都会得到相应的解析。
php
$userName="吴祁";
echo"Hisnameis$userName";
echo"
";
//中文会出现一些问题
echo"他的名字叫$userName,他19岁了,已经长大成人了!
";
echo"
";
//可以采用字符串连接的方式解决
echo"他的名字叫".$userName.",他19岁了,已经长大成人了!
"
//转义字符可以得到解析
echo"虽然他的QQ号有很多女生,\n但一个都不属于他";
?
>
部分常用的转义字符
转义序列
描述
\n
换行符
\r
回车
\t
水平制表图
\\
反斜杠
\$
美元符
\"
双引号
单引号会按照声明的原样解释,解析字符串时,变量和转义序列都不会进行解析。
php
echo'吴祁的变量名为:
$userName,转义字符\n在单引号中无效'
?
>
2.操作符(运算符)
操作符是用来对数组和变量进行某种操作运算的符号。
算术操作符
操作符
名称
示例
+
加
$a+$b
-
减
$a-$b
*
乘
$a*$b
/
除
$a/$b
%
取余
$a%$b
复合赋值操作符
操作符
使用方法
等价于
+=
$a+=$b
$a=$a+$b
-=
$a-=$b
$a=$a-$b
*=
$a*=$b
$a=$a*$b
/=
$a/=$b
$a=$a/$b
%=
$a%=$b
$a=$a%$b
.=
$a.=$b
$a=$a.$b
前置递增递减和后置递增递减运算符:
$a=++$b;
$a=$b++;
$a=--$b;
$a=$b--;
比较运算符
操作符
名称
使用方法
==
等于
$a==$b
===
恒等
$a===$b
!
=
不等
$a!
=$b
!
==
不恒等
$a!
==$b
<>
不等
$a<>$b
<
小于
$a<$b
>
大于
$a>$b
<=
小于等于
$a<=$b
>=
大于等于
$a>=$b
注:
恒等表示只有两边操作数相等并且数据类型也相当才返回true;
例如:
0=="0"这个返回为true,因为操作数相等
0==="0"这个返回为false,因为数据类型不同
逻辑运算符
操作符
使用方法
使用方法
说明
!
非
!
$b
如果$b是false,则返回true;否则相反
&&
与
$a&&$b
如果$a和$b都是true,则结果为true;否则为false
||
或
$a||$b
如果$a和$b中有一个为true或者都为true时,其结果为true;否则为false
and
与
$aand$b
与&&相同,但其优先级较低
or
或
$aor$b
与||相同,但其优先级较低
操作符"and"和"or"比&&和||的优先级要低。
三元操作符
Condition?
valueiftrue:
valueiffalse
示例:
($grade>=50?
"Passed":
"Failed")
错误抑制操作符:
$a=@(57/0);
除数不能为0,会出错,所以加上@避免出现错误警告。
数组操作符
操作符
使用方法
使用方法
说明
+
联合
!
$b
返回一个包含了$a和$b中所有元素的数组
==
等价
$a&&$b
如果$a和$b具有相同的元素,返回true
===
恒等
$a||$b
如果$a和$b具有相同的元素以及相同的顺序,返回true
!
=
非等价
$aand$b
如果$a和$b不是等价的,返回true
<>
非等价
如果$a和$b不是等价的,返回true
!
==
非恒等
$aor$b
如果$a和$b不是恒等的,返回true
操作符的优先级和结合性:
为了避免优先级混乱,可以使用括号避开优先级。
3.控制结构
如果我们希望有效地相应用户的输入,代码就需要具有判断能力。
能够让程序进行判断的结构称为条件。
if条件判断语句
if(条件判断){
//......
}
if(条件判断){
//....
}
else{
//....
}
if(条件判断){
//...
}
elseif{
//...
}
elseif{
//....
}
else{
//....
}
switch语句
switch(变量){
case"值1":
//...
break;
case"值2":
//...
break;
case"值N":
//...
break;
default:
//....
break;
}
while循环
while(条件){
//....
}
for循环
for(初始值;条件;计数器){
//....
}
除了for循环外,PHP还提供了foreach循环,它专门用于数组的使用。
我们在数组中详细介绍它。
dowhile循环
do{
//...
}while(条件);
如果希望停止一段代码的执行,根据所需要达到的效果不同,可以有3中方法实现。
第一种:
break;退出循环;第二种是exit;退出程序第三种是continue;退出当前循环
if(条件)
{
break;//continue
}
第三章数学运算
学习要点:
1.数值数据类型
2.随机数
3.格式化数据
4.数学函数
一.数值数据类型
PHP中,数字或数值数据以及数学函数的使用很简单。
基本来说,要处理两种数据类型:
浮点数和整数。
浮点数和整数值的内部表示分别是C数据类型double和int。
类似于C,PHP中这些数据类型遵循同样的一组规则。
PHP是一种松散类型的脚本语言,变量可以根据计算的需求改变数据类型。
这就允许引擎动态地完成类型转换。
所以,如果计算中包含数值和字符串,字符串会在完成计算之前转换为数值,而数值则会在与字符串连接之前转换为字符串。
php
$a='5';
$b=7+$a;
echo"7+$a=$b";
?
>
函数is_numeric()可以检查作为参数传入的值是否是数值。
函数is_int()和is_float()用于检查具体的数据类型。
如果传入一个整数或浮点数,这些函数会返回true,否则返回false,即使传入一个有合法数值表示的字符串也会返回false。
也可以强制引擎改变数据类型。
这称之为类型强制转换,可以在变量或值前面增加(int)、(integer)、(float)、(double)或(real)实现,也可以通过使用函数intval()或floatval()来实现。
2.随机数
随机数本身就是一门科学。
已经有很多不同的随机数生成器实现。
PHP实现了其中两种:
rand()和mt_rand()。
而且mt_rand()甚至比libc中的版本还要快。
两个函数都提供一些函数来得到MAX_RAND的值。
rand()的是getrandmax(),mt_rand()的是mt_getrandmax();
3.格式化数据
除了警告、错误等信息外,PHP的大部分输出都是利用echo、print()和printf()之类的函数生成的。
这些函数将参数转换成一个字符串,并发给客户端应用程序。
number_format()函数可以把整数和浮点数值转换为一种可读的字符串表示。
php
$i=123456;
$si=number_format($i,2,".",",");
echo$si;
?
>
4.数学函数
abs()绝对值
floor()舍去法取整
ceil()进一法取整
round()四舍五入
min()求最小值或数组中最小值
max()求最大值数组中最大值
第四章数组
学习要点:
5.什么是数组
6.自定义键数组
7.数组里的数组
8.数组的排序
9.数组的指针操作
10.统计数组个数
11.将数组转换成标量变量
一.什么是数组
传统上把数组(array)定义为一组有某种共同特性的元素,包括相似性和类型。
每个元素由一个特殊的标识符来区分,称之为键(key);而每个键对应一个值(value)。
李彦宏
周鸿祎
马云
俞敏洪
李开复
吴祁
依照上表,我们创建一个数组。
第一种:
$userNames=array('李彦宏','周鸿祎','马云','俞敏洪','李开复','吴祁');
这是索引数组初始化:
数字索引的初始值是从0开始计算的:
userNames[0]---userNames[5],代表这6个人的名字。
第二种:
通过range()函数自动创建一个数组
$numbers=range(1,10)$letters=range('a','z')
可以加第三个参数$numbers=range(1,10,2),第三个参数表示步长
访问数组的内容:
要访问一个变量的内容,可以直接使用其名称。
如果该变量是一个数组,可以使用变量名称和关键字或索引的组合来访问其内容。
$numbers[0]、$numbers[1]、$numbers[2];等。
改变数组的值:
$numbers[0]="Lee";
使用循环访问数组
由于数组使用有序的数字作为索引,所以使用一个for循环就可以很容易地显示数组的内容:
for($i=0;$i<10;$i++){
echo$numbers[$i];
}
也可以使用foreach循环来遍历数组:
foreach($numbersas$value){
echo$value;
}
测试是否为数组变量:
is_array();
print_r函数:
打印关于变量的易于理解的信息
二.自定义键数组
初始化相关数组
$ages=array('吴祁'=>19,'李炎恢'=>27,'胡心鹏'=>23);
访问数组元素
$ages["吴祁"];
$ages["李炎恢"];
$ages["胡心鹏"];
追加数组:
首先,创建只有一个元素的数组,然后追加两个元素。
$ages=array("吴祁"=>19);
$ages["李炎恢"]=27;
$ages["胡心鹏"]=23;
直接添加数组:
无需创建,直接添加,添加第一个元素自动建立数组。
$ages["吴祁"]=19;
$ages["李炎恢"]=27;
$ages["胡心鹏"]=23;
使用循环语句:
因为相关数组的索引不是数字,因此无法使用for循环语句中使用一个简单的计数器对数组进行操作。
但是可以使用foreach循环或list()和each()结构。
foreach($agesas$key=>$value){
echo$key."=>".$value."
";
}
使用each()结构打印$ages数组的内容:
each()函数返回数组的当前元素,并将下一个元素作为当前元素。
while(!
!
$element=each($ages)){
echo$element["key"];
echo"=>";
echo$element["value"];
echo"
";
}
使用list()函数,可以用来将一个数组分解为一系列的值。
可以按照如下方式将函数each()返回的两个值分开:
list($name,$age)=each($ages);
当使用each()函数时,数组将记录当前元素。
如果希望在相同的脚本中两次使用该数组,就必须使用函数reset()将当前元素重新设置到数组开始处。
reset($prices);
确定唯一的数组元素:
array_unique();它会删除掉里面相同值的元素。
置换数组键和值:
array_flip();它会对调数组中的key和value;
4.数组里的数组
数组不一定就是一个关键字和值的简单列表----数组中的每个位置用来保存另一个数组。
使用这种方法,可以创建一个二维数组。
可以把二维数组当成一个矩阵,或者是一个具有宽度和高度或者行和列的网格。
二维表
产品名
数量
价格
苹果
6
28.8
猪肉
2
32.1
饼干
3
45.3
$products=array(
array("苹果",6,28.8),
array("猪肉",2,32.1),
array("饼干",3,45.3)
);
显示这个二维数组:
echo"|".$products[0][0]."|".$products[0][1]."|".$products[0][2]."|
";
echo"|".$products[1][0]."|".$products[1][1]."|".$products[1][2]."|
";
echo"|".$products[2][0]."|".$products[2][1]."|".$products[2][2]."|
";
此外,还可以使用双重for循环来实现同样的效果:
for($row=0;$row<3;$row++){
for($column=0;$column<3;$column++){
echo"|".$products[$row][$column];
}
echo"|
";
}
使用列明的二维数组:
$products=array(
array("产品名"=>"苹果","数量"=>6,"价格"=>28.8),
array("产品名"=>"猪肉","数量"=>2,"价格"=>32.1),
array("产品名"=>"饼干","数量"=>3,"价格"=>45.3)
);
显示这个二维数组:
第一种方式:
for($row=0;$row<3;$row++){
echo"|".$products[$row]["产品名"]."|".
$products[$row]["数量"]."|".$products[$row]["价格"]."|
";
}
第二种方式:
for($row=0;$row<3;$row++){
while(!
!
list($key,$value)=each($products[$row])){
echo"|".$value;
}
echo"|
";
}
5.数组的排序
对保存在数组中的相关数据进行排序是一件非常有意义的事情。
使用并且排序一个一维数组是非常简单的。
使用sort()函数将数组按字母升序进行排序。
$products=array("orange","banner","apple");
sort($products);
使用sort()函数将数字升序进行排序。
$prices=array(100,10,4,23,78);
sort($prices);
sort()函数的第二个参数是可选的。
这个可选参数可以传递SORT_REGULAR(默认值)、SORT_NUMERIC或SORT_STRING。
指定排序类型的功能是非常有用的。
比如,当要比较可能包含有数字2和12的字符串时,从数字角度看,2要小于12,但是作为字符串,"12"却要小于"2"。
使用asort()函数和ksort()函数对相关数组排序
创建一个包括3个产品及价格的数组,然后将它们按价格的升序进行排序:
$prices=array("c"=>苹果,"a"=>猪肉,"b"=>饼干);
asort($prices);
按说明排序使用ksort()函数
ksort($prices)
反向排序:
sort()根据数组元素值进行排序,但是元素的键值关系发生改变、asort()根据数组元素值进行排序,键值的关系不变和ksort()根据数组的键值都是正向排序,当然也有相对应的反向排序.
实现反向:
rsort()、arsort()和krsort()。
在一些应用程序中,可能希望