admin 管理员组文章数量: 887039
2024年2月23日发(作者:synchronize什么意思)
1.分界标示符
PHP分界标示符确定PHP脚本的开始和结束位置,在PHP语言中有四种不同风格的分界标示符可以让PHP代码嵌入到HTML代码中,分别如下:
标准分界符:
简写分界符: 和 ?>
ripte 和VBScript风格分界符:
风格分界符: <% 和 %>
2.标示符:由字符,数字,下划线组成,首字母必须是字符或下划线
变量以$开头。
是区分大小写的。
4.语句以分号结束
5.注释:
/* */
//
#
共上面三种
6.数据类型:integer,double,string,array,object(对象类型),Boolean,resource(资源),NULL
7.字符串的定义:用双引号或者单引号,但有区别
双引号里面的变量和转义字符都会被解析,而单引号里面的就都当做是字符串来处理。如果在双引号中要想不解析变量,就可以用’’加在前面。
$str = "hello";
print "nihao,are you $str = $str";
print "
";
print 'nihao,are you $str = $str';
>
8.数组初始化:
数组定义:
$arr = array();
$arr[0]='nihoa';
$arr[1]=1;
正常数组初始化:
方式一:
$arr_family=array('LinNa','Jhon','Peter');
方式二:
$arr_family[] = 'LinNa';
$arr_family[] = 'Jhon';
$arr_family[] = 'Peter';
哈希表形式数组初始化:
方式一:
$arr_family['mother'] = 'LinNa';
$arr_family['father'] = 'Jhon';
$arr_family['mother'] = 'Peter';
方式二:
$arr_family=array('mother'=>'LinNa','father'=>'Jhon','son'=>'Peter');
9.对象:
类:
Class 类名
{
Public $属性名;
Public function 函数名()
{
$变量名;
}
}
class foo{
public $C_foo = 'This is a class';
public function do_foo()
{
echo 'Doing foo';
}
}
$newfoo = new foo();
print $newfoo->C_foo;
print "
";
$newfoo->do_foo();
>
效果如下:
空,可以使null,也可以使NULL,不区分大小写
NULL表示没有值的变量。
11.数据类型转换
一般情况下,数据类型会自动转换,同时我们也可以进行强制类型转换,强制类型转换的方法是把数据类型用括号括起来放在要转换的数据类型前面即可。
(int)/(integer) 转换为整形值
(real),(double),(float)转换为双精度
(string)转换为字符串
(array)转换为数组
(object)转换为对象。
12.变量不需要定义就可以使用。
在函数外部定义的变量时全局变量,在函数内部定义或使用的变量是局部变量。
在函数内部不能访问函数外部的变量
要想访问,就必须在函数内部,复制一个全局变量,global 全局变量名,这样用的变量才是全局变量。
$a =1;
$b =2;
function Sum()
{
$b=$a+$b;
print "Internal $b is $b";
}
Sum();
print "
";
print "Out $b is $b";
>
效果如下:
从上面可以看到,函数里面是没法调用全局变量的,要想调用,需要申明。
$a =1;
$b =2;
function Sum()
{
global $a;
global $b;
$b= $a+ $b;
print "Internal $b is $b";
}
Sum();
print "
";
print "Out $b is $b";
>
效果如下:
我们看见,要想在函数里面调用全局变量,必须先用global来复制一遍这个变量,才能使用。
13.静态变量:用static修饰的变量
1.对于全局变量,只要定义了,就会以键值的形式存到$GLOBAL这个数组中,所以,如果我们想在函数中使用全局变量,也可以$GLOBAL[$全局变量名]的形式来引用。
$GLOBALS:包含指向当前程序中全局范围内有效的变量,它是一个数组,该数组的索引(或键名)就是全局变量的名称。
还可以获得外部来的变量,外部来的有四种类型:
$_GET:通过HTTP的GET方法提交至脚本的表单变量。
$_POST:通过HTTP的POST方法提交至脚本的表单变量。
$_FILE:通过HTTP的POST文件上传提交至脚本的变量。
$_COOKIE:通过HTTP的Cookies方法提交至脚本的变量。
程序如下:
This page uses frames. The current browser you are using does not support frames.
程序如下:
$name = $_POST['name'];
$password=$_POST['password'];
$sex=$_POST['sex'];
echo "name is $name";
echo "
";
echo "passowrd is $password";
echo "
";
echo "sex is $sex";
>
效果如下:
其他方式也是一样的。
3.检测是否为那个数据类型:
在PHP中,可以通过以下函数对变量的类型做判断。
函数is_integer判断变量是否为整数。
函数is_string判断变量是否为字符串。
函数is_double判断变量是否为浮点数。
函数is_array判断一个变量是否为数组。
我们会发现有很多很多的检测,用到可以直接拿来用。
4.获得数据类型:
在PHP中,可以使用预定义函数gettype取得一个变量的类型,它接受一个变量作为参数,返回这个变量的类型。
$a = 1;
$b='nihao';
$c = array();
echo "$a is " . gettype($a);
echo "
";
echo "$b is " . gettype($b);
echo "
";
echo "$c is " . gettype($c);
>
效果如下:
使用预定义函数settype设置一个变量的类型,该函数接受两个参数,第一个参数是变量名,第二个参数是要设置的变量的数据类型。
使用预定义函数isset判断一个变量是否已经定义,它接受一个变量作为参数值,返回值如果为TRUE,说明该变量定义过,否则,说明该变量没有被定义。
使用unset语句删除一个变量。从PHP4开始unset不再有返回值,因此,严格意义上讲,它并不是一个函数,而是一个PHP的语言结构。可以用unset一次删除多个PHP变量。
unset($a);
在PHP中通过define()函数定义一个常量。合法的常量名只能以字母和下划线开始,后面可以跟着任意字母、数字或下划线。常量一旦定义就不能再修改或者取消定义。
5.如果是多选框,虽然名字相同,但可能选择好多个,怎么处理呢?
可以再命名名字的时候,加[].
但是单选框不一样,因为单选框只有一个值,可以不需要加[]
This page uses frames. The current browser you are using does not support frames.
:
$name = $_POST['name'];
$password = $_POST['password'];
$gender = $_POST['gender'];
$hobby = $_POST['hobby'];
$like="";
foreach ($hobby as $one)
{
$like .="、".$one;
}
echo "gender is $gender";
echo "
";
echo "like: is $like";
>
效果如下:
6. 使用print_r函数显示数组元素
有时,为了在程序中查看一个数组的结构(即索引和值的对应关系),需要将数组结构显示到页面上。这可以通过PHP的print_r函数实现。
$ms_office = array(
0=>'word',
3=>'excel',
'outlook',
'access');
print_r($ms_office);
>
效果如下:
$ms_office = array(
'word',
'excel',
'outlook',
'access'
);
print_r($ms_office);
>
效果如下:
7.实现数组分割
使用函数array_chunk可以对一个数组进行分割,该函数语法如下所示。
array array_chunk(array $input_array, int $size, bool $preserve_key);
该函数接受3个参数,$input_array是将要分割的数组(即原数组),$size表示原数组被分割后,每个数组中元素的个数,$preverse_key是可选参数,它为TRUE时,分割后的每个数组的索引使用原数组的索引名;它为FALSE时,分割后的每个数组的索引都将使用从0开始的整数索引。该函数的返回值是一个数组,这个数组的索引从0开始,该数组的每个元素仍然是一个数组,即原数组被分割后的一个数组。
$ms_office = array(
'wd'=>'word',
'ec'=>'excel',
'ol'=>'outlook',
'ac'=>'access',
'vs'=>'visio'
);
echo '
';//作用就是让输出按格式来,不是直接乱七八糟输出print_r(array_chunk($ms_office,2));
print_r(array_chunk($ms_office,2,TRUE));
>
效果如下:
8.
实现数组合并
使用函数array_merge可以合并一个或多个数组,该函数的语法如下所示。
array array_merge($array…);
该函数接受一个或多个数组作为参数,PHP5中,它只接受array类型的参数。该函数返回一个合并后的数组。
$arr1 = array('Earth','Venus');
$arr2 = array(4=>'Mars',5=>'Jupiter',6=>'Saturn');
$planet = array_merge($arr1,$arr2);
echo '
';print_r($planet);
>
效果如下:
9.
处理数组元素和键值位置
PHP的每个数组内部均会有一个指针,指向当前元素。这里所谓的指针,可以把它理解成程序即将要处理的元素所在的位置。处理数组元素和键值(索引)的位置,就是获取数组某个位置上的元
素,或获取该元素后,将该指针移动到其他位置。PHP中,处理数组元素和键值位置的函数主要有以下几个。
current:该函数返回数组的当前元素,不移动当前指针位置。
next:该函数返回当前元素的下一个元素的值,并将指针向后移动一位,下一个元素不存在时,返回FALSE。
prev:该函数返回当前元素的上一个元素的值,并将指针向前移动一位,上一个元素不存在时,返回FALSE。
end:该函数返回数组的最后一个元素的值。
$planet = array(
'Earth',
'Venus',
'Mars',
'Jupiter',
'Saturn'
);
$pos = current($planet);
echo 'pos1='.$pos;
echo '
';echo '
';
$pos = next($planet);
echo 'pos2='.$pos;
echo '
';echo '
';
$pos = current($planet);
echo 'pos3='.$pos;
echo '
';echo '
';
$pos = prev($planet);
echo 'pos4='.$pos;
echo '
';echo '
';
$pos = end($planet);
echo 'pos5='.$pos;
echo '
';echo '
';
$pos = current($planet);
echo 'pos6='.$pos;
>
效果如下:
//此时$pos=Earth
//此时$pos=Venus
//此时$pos=Venus
//此时$pos=Earth
//此时$pos=Saturn
//此时$pos=Saturn
10.数组建新索引排序:
10.1使用函数sort对数组元素按顺向排序,即按字母由前向后或按数字由小到大排序。该函数的语法如下所示。
bool sort(array &$arr [,int $sort_flag]);
该函数接受一个数组作为输入参数,如果处理成功,该函数返回TRUE,否则,该函数返回FALSE。该函数将会删除所要排序的数组原有的索引值,从而为该数组使用新的索引值。
10.2使用函数rsort对数组元素做逆向排序,即按字母从后到前或按数字由大到小排序。该函数的语法如下所示。
bool rsort(array &$arr [,int $sort_flag]);
该函数接受一个数组作为输入参数,如果处理成功,函数返回TRUE,否则返回FALSE。该函数将会删除所要排序的数组原有的索引值,从而为该数组使用新的索引值。
11.数组保持原索引的排序:
asort:该函数对数组元素进行排序,并且保持数组的原索引关系不变。该函数仍然对数组元素按顺向排序。如果处理成功,该函数返回TRUE,否则返回FALSE。
ksort:该函数对数组元素按索引名顺序排序,并且保持数组的原索引关系不变,如果处理成功该函数返回TRUE,否则返回FALSE。该函数主要用于关联数组。
$planet1 = array(
'Earth',
'Venus',
'Mars',
'Jupiter',
'Saturn'
);
$planet2 = array(
'X'=>'Earth',
'Y'=>'Venus',
'Z'=>'Mars',
'A'=>'Jupiter',
'B'=>'Saturn'
);
asort($planet1);
ksort($planet2);
echo '使用函数asort对数组元素排序:';
echo '
';
foreach($planet1 as $key => $value)
{
echo 'planet1['.$key.']='.$value;
echo '
';echo '
';}
echo '
';echo '使用函数ksort对数组元素排序:';
echo '
';
foreach($planet2 as $key => $value)
{
echo 'planet2['.$key.']='.$value;
echo '
';echo '
';}
>
效果如下:
12. 数组的随机排序
PHP提供一个随机排序数组元素的函数shuffle(),该函数的语法如下所示。
bool shuffle (array $array)
该函数为参数数组$array中的元素赋予新的键名,这将删除原有的键名而不仅仅是重新排序。如果执行成功该函数返回TRUE。
13. 数组的反向排序
本节最后,介绍一个可以将数组元素按原顺序反向排序的函数,该函数是array_reverse()。其语法如下所示。
array array_reverse (array $array [, bool $preserve_keys])
该函数返回一个与原数组单元顺序相反的数组,原数组以参数$array传入该函数,该函数的第2个参数是可选的,如果第2个参数$preserve_keys设置为TRUE,则原数组的键名将会被保留。
14. 重置一个数组
PHP中,重置一个数组指的是,将数组中的内部指针移动到该数组的第一个元素所在的单元。使用函数reset可以完成对数组的重置。该函数的语法如下所示。
mixed reset(array &$arr);
该函数接受一个数组类型的变量,将函数内部指针指向数组第一个单元,并将第一个单元的元素返回。如果数组为空,该函数返回FALSE。
$planet = array(
'Earth',
'Venus',
'Mars',
'Jupiter',
'Saturn'
);
echo '当前元素是:'.current($planet);
echo '
';
next($planet);
next($planet);
echo '
';echo '调用两次next函数之后,当前元素是:'.current($planet);
echo '
';
reset($planet);
echo '
';echo 'reset数组$planet后,当前元素是:'.current($planet);
echo '
';>
效果如下:
15. 用数组对变量赋值
PHP中,可以将数组的元素作为值赋给变量,使用语言结构list()可以完成这个功能。严格意义上讲,list()和array()一样,不是函数。
在下述程序中,通过list,将数组$planet的第一个元素’Earth’赋给了变量$no1,将第二个元素赋给了变量$no2,将第3个元素赋给了变量$no3。
$planet = array(
'Earth',
'Venus',
'Mars',
'Jupiter',
'Saturn'
);
list($no1,$no2,$no3) = $planet; //将数组中的前3个元素分别赋给list结构中对应的3个变量
echo 'no1='.$no1;
echo '
';echo '
';
echo 'no2='.$no2;
echo '
';echo '
';
echo 'no3='.$no3;
echo '
';echo '
';>
效果如下:
16. 快速创建数组
函数range()可以快速创建制定元素范围的数组。其语法如下所示。
array range(mixed $low, mixed $high [, number $step])
函数range()返回一个数组,其中元素为参数从$low到$high的序列,包括它们本身。例如range(1,9)相当于array(1,2,3,4,5,6,7,8,9),如果$low>$high,则序列将从$high到$low。该函数的第3个参数$step是可选的,如果给出了step的值,它将被作为元素之间的跨度值。step应该为正值。如果未指定,step则默认为1。
echo '
';
$arr1 = range(5,10);
print_r($arr1);
$arr2 = range('a','f');
print_r($arr2);
$arr3 = range(2,10,2);
print_r($arr3);
>
效果如下;
17. 压入和弹出数组元素
这里所说的压入是指,向数组的末尾增加一个元素。而弹出是指,将数组中的最后一个元素取出。PHP提供两个函数分别完成这两个功能,这两个函数是array_push()和array_poo()。需要注意的是,使用本函数后会重置
数组指针,相当于使用了函数reset()。
18. 改变数组字符索引名的大小写
PHP提供了一个函数,可以将以字符串作为数组索引(键名)的大小写全部更换,这个函数是array_change_key_case(),该函数的语法如下所示。
array array_change_key_case(array $input [, int $case])
函数array_change_key_case()将参数$input数组中的所有索引改为全小写或大写。可选参数$case用来指定大小写转换方式,它为两个常量值:CASE_UPPER和CASE_LOWER。没有指定该参数时,该函数使用的默认值是CASE_LOWER。
$olympic = array(
'Barcelona'=>1992,
'AtLanTa'=>1996,
'sydney'=>2000,
'AthEns'=>2004,
'BEIJING'=>2008
);
echo '原数组:';
echo '
';';print_r($olympic);
echo '
$nol = array_change_key_case($olympic, CASE_UPPER);
echo '
';
echo '调用array_change_key_case()之后:';
echo '
';print_r($nol);
>
效果如下:
19. 交换数组索引和元素
PHP中的数组可以通过函数实现索引和元素的交换,这对程序实现某些操作带来极大的便利,这个函数就是array_flip();
$olympic = array(
'Barcelona'=>1992,
'Atlanta'=>1996,
'Sydney'=>2000,
'Athens'=>2004,
'Beijing'=>2008
);
echo '原数组:';
echo '
';';print_r($olympic);
echo '
$nol = array_flip($olympic);
echo '
';
echo '数组元素和索引对调之后:';
echo '
';print_r($nol);
>
效果如下:
20. 快速填充数组元素
PHP提供函数快速填充数组,将数组中的某些或所有元素都置成通一个值,这个函数是array_fill(),其语法如下所示。
array array_fill(int $start, int $num, mixed $value)
函数array_fill()有3个参数:其中参数$start指定要填充元素的开始索引,参数$num表示将$num个数组元素以参数$value填充。
$arr = array_fill(2, 4, 'orange');
echo '
';
print_r($arr);
>
效果如下:
21. 统计数组元素出现次数
函数cout()用来计算整个数组元素的个数,而函数array_count_values()用来统计数组中各元素出现的次数,即数组中各元素的个数。函数array_count_values()的语法如下所示。
array array_count_values(array $arr)
该函数返回一个数组,这个数组把参数数组$arr中的元素作为索引,元素出现的次数作为对应索引的值。
函数array_count_values()统计出数组$arr中,各个元素出现的次数,而且从这个执行结果可以看出,函数array_count_values()统计元素时,是区分元素大小写的,比如Say和say会分别被统计。
$say = array(
'Say',
'you',
'say',
'me',
'Say',
'it',
'together'
);
echo '原数组:';
echo '
';';print_r($say);
echo '
$say_tmp = array_count_values($say);
echo '
';
echo '统计结果如下:';
echo '
';print_r($say_tmp);
>
效果如下:
22. 检查数组索引是否存在
PHP提供函数array_key_exists()检查给定的索引是否存在于数组中,该函数语法如下所示。
bool array_key_exists(mixed $key, array $search)
该函数查找由参数$key指定的索引,是否存在于由参数$sarch指定的数组中,如果存在,该函数返回TRUE,否则或者出错时,该函数返回FALSE。参数$key可以是任何能作为数组索引的值。
23. 取得数组中的所有索引
PHP提供函数array_keys()用来获取数组中所有的索引名,该函数语法如下所示。
array array_keys(array $arr [, mixed $search_value [, bool $strict]])
该函数会将参数数组$arr中,所有的索引名返回到一个数组中。参数search_value是可选的,如果指定该参
数,则函数array_keys只返回该元素值对应的索引名,可选参数$strict用来进行全等比较。
$arr1 = array(
0=>100,
"gold"=>"money"
);
$arr2 = array(
'Sunday',
'Saturday',
'Monday',
'Sunday',
'Sunday'
);
echo '
';echo '数组arr1的全部索引是:';
print_r(array_keys($arr1));
echo '数组arr2中元素”Sunday“全部索引是:';
echo '
';print_r(array_keys($arr2,'Sunday'));
>
效果如下:
24. 用回调函数处理数组
PHP支持回调函数操作给定数组的元素上,这也是PHP数组函数的强大功能之一。函数array_map()就可以完成这样的工作,它将回调函数作用到给定数组的元素上。其语法如下所示。
array array_map(callback_func, array $arr1 [, array ...])
函数array_map()返回一个数组,该数组包含了参数$arr1中的所有元素经过函数callback_func处理过之后的元素。callback接受参数的数目应该和传递给array_map()函数的数组数目一致。
function cube($n)
{
$cb = $n*$n*$n;
return $cb;
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
echo '计算原数组各元素的立方,结果如下:';
echo '
';echo '
';
print_r($b);
>
效果如下:
25. in_array:该函数可以判断某个值是否存在于数组中。如果在数组中找到该值,函数返回TRUE,否则返回FALSE。
key:该函数可以获取数组中当前单元的索引值。
$planet = array(
'Earth',
'Venus',
'Mars',
'Jupiter',
'Saturn'
);
$temp = 'mars';
if(in_array('Mars',$planet))
{
echo 'Mars 存在于数组$planet中';
echo '
';echo '
';}
if(in_array($temp,$planet))
{
echo $temp.'存在于数组$planet中';
echo '
';echo '
';
}
else
{
echo $temp.'不存在于数组$planet中';
echo '
';echo '
';}
>
效果如下:
$planet = array(
'Eth'=>'Earth',
'Vns'=>'Venus',
'Mrs'=>'Mars',
'Jpt'=>'Jupiter',
'Stn'=>'Saturn'
);
end($planet);
echo '当前元素的索引为:'.key($planet);
echo '
';echo '
';echo '当前元素的值为:'.end($planet);
>
效果如下:
14.获取HTML的变量
HTML中的设计:
"/TR/html4/">
Insert title here
文件:
$user =$_POST['User'];
echo "name: $user[name]
n";
echo "name: $user[sex]
n";
echo "name: $user[Email]
n";
>
效果:
15.运算符:+ - * / %
16.连接字符串: 用 . 把两个字符串连接起来,如果两个字符串中有一个数字,将自动转换为字符串,但数字两边要加空格,如果两个都是数字,如果不加空格,就会当做小数点来处理,如果当空格,就会当连接字符串处理。
echo "gege". 3 . 1 . "nihao". 3.1;
>
效果如下:
17.赋值运算:
%= 将左边的值对右边取余数
.= 将右边的字符串加到左边
18.关系运算符:
== 等于 $a==$b $a 和$b的值相等
=== 恒等于 $a===$b $a和$b的数据类型和值都相等。
$a = 4;
$b = '4';
if($a==$b)
{
echo '$a==$b';
}
else
{
echo '$a!=$b';
}
echo "
";
if($a===$b)
{
echo '$a===$b';
}
else
{
echo '$a!==$b';
}
19.语句:
If
If else if
Switch()
{
Case “”:
Xxxx
Case “”:
xxxxx
}
For
While()
{}
Do
{}while();
Break;
Continue;
20.函数
函数的参数传递有两种:一种是值传递,一种是引用传递
值传递是在传递的过程中,又创建了一个副本,导致不会改变原来的数据
引用传递是会改变原来数据的。
值传递函数:function add($a,$b)
引用传递函数:funciton add(&$a,&$b)
$a=1;
$b=2;
function addvalue($arg1,$arg2)
{
$arg1=$arg1+$arg2;
print "internal $a is $arg1";
}
addvalue($a, $b);
print "
Out $a is $a";
>
效果如下:
$a=1;
$b=2;
function addvalue(&$arg1,&$arg2)
{
$arg1=$arg1+$arg2;
print "internal $a is $arg1";
}
addvalue(&$a, &$b);
print "
Out $a is $a";
>
效果如下:
21.系统函数:date()
格式:
Date(string formate[,int timestamp])
Formate 如下:
格式字串可以识别以下 format 参数的字符串
format
字符
说明
---
月份中的第几天,有前导零的 2
位数字
星期中的第几天,文本表示,3 个字母
月份中的第几天,没有前导零
星期几,完整的文本格式
ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加)
每月天数后面的英文后缀,2 个字符
星期中的第几天,数字表示
年份中的第几天
---
返回值例子
日
d
D
j
l(“L”的小写字母)
01 到
31
Mon 到
Sun
1 到
31
Sunday 到
Saturday
N
S
w
z
星期
W
月
F
m
M
n
1(表示星期一)到
7(表示星期天)
st,nd,rd 或者
th。可以和
j 一起用
0(表示星期天)到
6(表示星期六)
0 到
366
---
例如:42(当年的第 42 周)
---
---
ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的)
---
月份,完整的文本格式,例如
January 或者 March
数字表示的月份,有前导零
三个字母缩写表示的月份
数字表示的月份,没有前导零
January 到
December
01 到
12
Jan 到
Dec
1 到
12
格式字串可以识别以下 format 参数的字符串
format
字符
说明
给定月份所应有的天数
返回值例子
t
年
L
28 到
31
---
如果是闰年为
1,否则为
0
---
是否为闰年
o
ISO-8601 格式年份数字。这和
Y
的值相同,只除了如果 ISO 的星Examples:
1999 or
2003
期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加)
4 位数字完整表示的年份
2 位数字表示的年份
例如:1999 或
2003
例如:99 或
03
---
Y
y
时间
a
A
B
g
G
h
H
i
s
时区
e
I
O
P
---
小写的上午和下午值
大写的上午和下午值
Swatch Internet 标准时
am 或
pm
AM 或
PM
000 到
999
小时,12 小时格式,没有前导零
1 到
12
小时,24 小时格式,没有前导零
0 到
23
小时,12 小时格式,有前导零
小时,24 小时格式,有前导零
有前导零的分钟数
秒数,有前导零
---
时区标识(PHP 5.1.0 新加)
是否为夏令时
与格林威治时间相差的小时数
01 到
12
00 到
23
00 到
59>
00 到
59>
---
例如:UTC,GMT,Atlantic/Azores
如果是夏令时为
1,否则为
0
例如:+0200
与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 例如:+02:00
5.1.3 新加)
本机所在的时区
时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。
例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
T
Z
-43200 到
43200
格式字串可以识别以下 format 参数的字符串
format
字符
说明
---
2004-02-12T15:19:21+00:00
例如:Thu, 21 Dec 2000 16:01:07 +0200
参见 time()
返回值例子
完整的日---
期/时间
c
r
U
ISO 8601 格式的日期(PHP 5 新加)
RFC 822 格式的日期
从 Unix 纪元(January 1 1970
00:00:00 GMT)开始至今的秒数
用时间date会出现错误解释:
实际上,从 PHP 5.1.0 ,当对使用date()等函数时,如果timezone设置不正确,在每一次调用时间函数时,都会产生E_NOTICE 或者 E_WARNING 信息。而又在php5.1.0中,ne这个选项,默认情况下是关闭的,无论用什么php命令都是格林威治标准时间,但是PHP5.3中好像如果没有设置也会强行抛出了这个错误的,解决此问题,只要本地化一下,就行了。
以下是三种方法(任选一种都行):
一、在页头使用date_default_timezone_set()设置 date_default_timezone_set('PRC'); //东八时区
echo date('Y-m-d H:i:s');
二、在页头使用 ini_set('ne','Asia/Shanghai');
三、修改。打开查找ne 去掉前面的分号修改成为:ne =PRC
重启http服务(如apache2或iis等)即可。
XXX可以任意正确的值。对于我们国内来说:可以为以下值:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei
(依次为澳门,香港,台北),还有新加坡:Asia/Singapore,当然PRC也行。
date_default_timezone_set('PRC');
$a = date("Y-m-d h:i:s w");
echo $a;
>
效果如下:
文件的HTML中,可以添加php文件
注意上面不是.html 而是.php
在.php里面可以写html 代码
上面我们是通过require来保护php文件,还可以通过include,效果一样。
效果如下:
上面的
是代表添加一横线的意思。
23.数组
下面有数组的定义,赋值,以及获取数组的长度:
$arr = array();
$arr[0]=1;
$arr[1]=2;
$count= count($arr);
echo $count;
>
效果如下:
我们可以通过count()函数或者sizeof()函数来获取数组的大小。
24.数组的遍历
数组的遍历可以通过for,也可以通过foreach
Foreach的写法如下:
$arr = range(1, 10);
foreach ( $arr as $variable)
echo $variable.",";
>
Range的作用取得从最小到最大的递增数,默认步长为1,也可以在第三个参数中设置步长。
注意上面的foreach的写法,数组写在前面,变量写在后面
效果如下:
25.非数字索引数组,类哈希数组
按键值方式存储的数组
创建数组:
$arr = array('PHP'=>50,'Java'=>60,'C++'=>'nihao');
$newarr['xiaoming']=30;
$newarr['zhulei']='male';
$newarr[10]='duoduo';
foreach ($arr as $mykey=>$myvalue)
{
echo "$mykey is $mykey and $myvalue is $myvalue"."
";
}
foreach ($newarr as $mykey=>$myvalue)
{
echo "$mykey is $mykey and $myvalue is $myvalue"."
";
}
>
效果如下:
如果要想添加一个数据,直接输就行了,比如添加一个$newarr[‘zhagnyang’]=10;
如果zhangyan已经存在,就会被覆盖。
删除元素:
Unset(数组名[‘键名’]);
$newarr['xiaoming']=30;
$newarr['zhulei']='male';
$newarr[10]='duoduo';
foreach ($newarr as $mykey=>$myvalue)
{
echo "$mykey is $mykey and $myvalue is $myvalue"."
";
}
echo "*********************************************************";
echo "
";
$newarr['zhangyang']=10;
foreach ($newarr as $mykey=>$myvalue)
{
echo "$mykey is $mykey and $myvalue is $myvalue"."
";
}
echo "*********************************************************";
echo "
";
unset($newarr['xiaoming']);
foreach ($newarr as $mykey=>$myvalue)
{
echo "$mykey is $mykey and $myvalue is $myvalue"."
";
}
>
效果如下:
检测键是否存在:
Isset(数组名[‘键名’])
$newarr['xiaoming']=30;
$newarr['zhulei']='male';
$newarr[10]='duoduo';
if(isset($newarr['zhulei']))
{
echo "yes, key zhulei is exist!";
}
else
{
echo "no, key zhulei is not exist!";
}
>
效果如下:
检测值是否存在
In_array(‘值’,数组名)
$newarr['xiaoming']=30;
$newarr['zhulei']='male';
$newarr[10]='duoduo';
if(in_array(20, $newarr))
{
echo "yes, value 20 is exist!";
}
else
{
echo "no, value 20 is not exist!";
}
>
效果如下:
Php 中的数组操作符:
26.二维数组
count() 函数计算数组中的单元数目或对象中的属性个数。
对于数组,返回其元素的个数,对于其他值,返回 1。如果参数是变量而变量没有定义,则返回 0。如果 mode
被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数。
语法
count(array,mode)
参数 描述
array 必需。规定要计数的数组或对象。
mode
可选。规定函数的模式。可能的值:
0 - 默认。不检测多维数组(数组中的数组)。
1 - 检测多维数组。
创建二维数组:
$book = array(
array('Php','C++','Java'),
array(1,2,3),
array('zhulei','xiaoming','guozhi'),
array('nihao','ok','tt')
);
echo count($book,0);
>
效果如下:
二维数组取值:
$book = array(
array('Php','C++','Java'),
array(1,2,3),
array('zhulei','xiaoming','guozhi'),
array('nihao','ok','tt')
);
for ($i =0;$i<4;$i++)
{
for($j =0;$j<3;$j++)
{
echo $book[$i][$j].",";
}
echo "
";
}
>
效果如下:
我们可以通过count($book)来获取二维数组的第一维的长度
我们可以通过这样的方法来获取第二维数组的长度:
$book = array(
array('Php'),
array(1,2),
array('zhulei','xiaoming','guozhi'),
array('nihao','ok')
);
foreach ($book as $one)
{
echo "size is ".sizeof($one);
echo "
";
}
>
效果如下:
对于键值数组也是一样的。
27.数组排序
一维数组:对于数字索引数组,可以用sort()来进行排序,而对于非数字索引,可以使用asort()函数。
$book = array(1,4,3,9,7,5);
sort($book);
foreach ($book as $one)
{
echo $one;
echo "
";
}
>
效果如下:
Assort()是对键值数组中按值进行排序的,一般值都是数字,这样排序比较有意义;
28.数组的合并
Array_merge(arr,arr1),把arr1追加到arr中
数组相交:
Array_intersect(arr,arr1)求arr和arr1的交集。
29.统计数组元素的个数:count(),sizeof()和array_count_values()
Count()和sizeof()类似。
而array_count_values()会返回一个数组,统计各个值出现的次数。
$book = array(1,4,3,9,7,5,1,2,5,7,3,7,5);
$newback = array_count_values($book);
foreach ($newback as $key=>$value)
{
echo "$key is $key and $value is $value";
echo "
";
}
>
反转数组:
如果是数字索引数组,就是普通的反转,如果是键值数组,就把键值反转。
Array_reverse();
第5章 PHP对字符串的处理
PHP对字符串的处理的完美支持,是PHP的强大功能之一。PHP提供了数十个用来处理字符串的内置函数,使用这些函数,可以在PHP程序中很方便地完成对字符串的各种操作。本章为读者介绍PHP开发中一些比较常用的字符串处理函数。
5.1 对字符串做分割和合并
1.把字符串切割,explode
2.把数组中间加东西组合成字符串:implode
array explode(string $separator, string $str [,int $limit])
函数explode使用字符串$separator(该函数的第1个参数)作为边界点,来分割字符串$str(该函数的第2个参数)。该函数的返回值是一个数组,字符串被分割后,分割的部分会存入该数组。该函数最后一个参数$limit是可选参数。如果设置了该参数,则返回的数组中最多有limit个元素,最后一个元素包含字符串$str的所有剩余部分。
$str = "tea,milk,coffee,juice";
$arr = explode(',',$str);
echo "
";print_r($arr);
$arr = explode(',',$str,2);
print_r($arr);
>
效果如下:
语法
implode(separator,array)
参数
separator
array
描述
可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。
必需。要结合为字符串的数组。
$drink_arr = array(
"tea",
"milk",
"coffee",
"juice"
);
$drink_str = implode('|',$drink_arr);
echo "drink_str = ".$drink_str;
>
组合效果:
5.2 对字符串做比较和替换
字符串比较通常是指,判断两个字符串是否一样,用更专业的说法,就是比较两个字符串的大小。PHP通过字符的ASCII码来决定字符的大小,从而决定字符串的大小。例如,字母a的ASCII码是097,字母b的ASCII码是098,因此’b’>’a’。字母表中,靠后字母的ASCII码大,所有的小写字母比大写字母的ASCII码大。
5.2.1 比较两个字符串大小
PHP提供函数strcmp对两个字符串比较大小。该函数语法如下所示。
int strcmp(string $str1, string $str2);
函数strcmp接受两个参数,它们是待比较的字符串。该函数返回值是整数,如果字符串$str1和字符串$str2相等,则函数返回0,如果字符串$str1小于字符串$str2,则函数返回-1,如果字符串$str1大于字符串$str2,则函数返回值大于0。
5.2.2 字符串的替换
在实际开发中,有时需要将字符串中的某些字符串替换成其他字符串,这可以通过PHP的内置函数str_replace来完成。该函数的语法如下所示。
string str_replace(string $search, string $replace, string $str);
该函数将字符串$str中的$search部分全部替换成字符串$replace,并且返回替换后的字符串。
5.3 输出打印字符串
向Web页面输出字符串是PHP程序最常用的操作之一。事实上,在本节之前的几乎示例程序中都有输出字符串的代码。在PHP输出字符串的方式有如下两种。
(1)使用print。它的用法如下所示。
int print(string $str);
print将字符串$str输出,并且总是返回1。严格意义上讲,print不是函数,它和echo一样,只是PHP的语言结构,因此,可以不使用括号将其参数括住。
(2)使用echo。使用echo输出字符串,在此之前已经大量使用,这里不再举例说明。
5.4 格式化字符串
将字符串转换成某种特定的格式,叫做字符串的格式化。比如一本书的价格是39元,一般都会格式化成“39.00”的形式。对字符串进行格式化,是程序开发中经常遇到处理操作之一。PHP语言提供函数sprintf,将字符串格式化,该函数的语法如下所示。
string sprintf(string $format, mixed $args);
参数$format是要转换的格式,该参数通常以百分号%开始,到转换字符为止。例如,%1.2f就是一个转换格式,其中f就是转换字符,它表示将字符串格式化成浮点数。这种用法,对于有C语言基础的读者来说,一定不会陌生。该函数返回格式化后的字符串。
5.5 获取字符串中的一个子串
获取字符串中的一个子串是指,获取这个字符串的某一部分。在PHP中,可以使用函数substr来获取字符串的某一部分。该函数的语法如下所示。
string substr(string $str, int $start, int $length);
函数substr将字符串$str中,从位置$start的字符开始,截取长度为$length的字符串,然后返回该
字符串。需要注意的是,字符串的第1个字符的位置是0,第2个字符的位置是1,以此类推。
5.6 删除字符串末尾部分的空白字符
PHP程序有时需要去掉字符串中的空白字符,比如用户从网页提交数据时,在文本框输入内容后,多敲入了一些空格,而PHP处理程序很可能要将这些数据存入数据库,这时,不希望将这些没有实际意义的空白字符存入数据库,因此要将这些空白字符处理掉。
PHP提供了一些函数,分别可以处理字符串末尾、开头的空白字符,也提供了同时处理字符串两端空白字符的函数。本节先介绍处理字符串末尾部分空白字符的内置函数。在PHP中,可以使用函数rtrim删除字符串末尾部分的空白字符。该函数的语法如下所示。
string rtrim(string $str);
5.7 删除字符串开始部分的空白字符
和函数rtrim对应的是函数ltrim,该函数将字符串开始部分的空白字符删除掉。从这个函数的命名可以看出,ltrim中的字母l代表的是left,一个字符串的left就是它的开始部分,所以,ltrim表示去掉字符串开始部分的空白字符。同理,rtrim中的首字母r表示right。这样,初学者就容易记住这两个函数及其用法了。函数ltrim的语法如下所示。
string ltrim(string $str);
该函数将字符串$str开始部分的空白字符删除,返回开始部分没有空白的字符串。
5.8 删除字符串两头的空白字符
如果希望删除字符串两头的空白字符,可以使用函数trim,该函数的语法如下所示。
string trim(string $str);
5.9 获取字符串的长度
字符串的长度一般是指,组成字符串的字符的数量。PHP提供函数strlen来获取一个字符串的长度。该函数的语法如下所示。
int strlen(string $str);
该函数返回字符串$str的长度。
5.10 对字符串做大小写转换
PHP提供两个函数分别完成对字符串中字母的大小写转换,它们是:
strtoupper($str),将字符串$str中的字母全部转换为大写字母。
strtolower($str),将字符串$str中的字母全部转换为小写字母。
5.11 处理含有HTML标记的字符串
使用PHP进行Web页面开发,经常会遇到处理HTML标记的问题。PHP提供的函数htmlentities完成对字符串中HTML标记的处理,该函数可将字符串中有关字符转换成HTML实体,即HTML字符编码。该函数的语法如下所示。
string htmlentities(string $str);
函数htmlentities将字符串$str中的HTML标记(如<、>等)转换成相关编码的形式。
5.12 多次生成一个字符串
函数str_repeat()可以用来重复生成一个字符串,该函数的语法如下所示。
string str_repeat (string $input, int $num)
函数str_repeat()有两个参数,第1个参数$input是要重复生成的字符串,第2个参数$num是要重复的次数。参数$num的取值必须大于等于0,如果$num设置为0,该函数会返回一个空字符串。
5.13 将字符串分析到变量
这小节所说的分析字符串,是指分析URL中的查询字符串。例如一个URL是:/?i=000&key=1a2b3c&cnt=10,那么该URL的查询字符串就是i=000&key=1a2b3c&cnt=10。PHP提供函数parse_str()可以分析类似的字符,并将分析结果赋值给变量。函数parse_str()的语法如下所示。
void parse_str(string $str [, array $arr])
本函数可将URL的查询字符串参数$str解析,返回的变量名及值就和查询字符串中的名称及值相对应。该函数第2个参数一个指定的数组,是可选的。如果指定这个数组参数,那么函数parse_str()将分析字符串得到变量作为数组索引、值作为数组元素存入该数组。
$arr = array();
parse_str("id=23&name=John%20Adams",$arr);
echo $arr['id']."
";echo $arr['name'];
>
效果如下:
$str = "first=php&second[]=string+functions&second[]=useing";
echo '原字符串:';
echo '
';echo $str;
parse_str($str);
echo '
';echo '
';
echo '分析结果:';
echo '
';echo 'first = '.$first;
echo '
';echo 'second[0] = '.$second[0];
echo '
';echo 'second[1] = '.$second[1];
parse_str($str,$input);
echo '
';echo '
';
echo '指定输出数组参数的结果:';
echo '
';echo "input['first'] = ".$input['first'];
echo '
';echo "input['second'][0] = ".$input['second'][0];
echo '
';echo "input['second'][1] = ".$input['second'][1];
echo '
';>
效果如下:
5.14 转换字符串到数组
PHP提供的函数str_split(),可将字符串转换成一个数组,即将数组分割成几个部分,每个部分的值作为数组的元素。该函数的语法如下所示。
array str_split(string $str [, int $split_length])
该函数将字符串$str做分割,将分割后的字符串各部分存入数组,并将数组返回。可选参数$split_length用来指定分割字符串长度。如果没有指定该参数,函数将把字符串$str按一个字符的长度分割。
$str = 'How are you?';
echo '原字符串:';
echo '
';
echo $str;
echo '
';echo '
';
$arr1 = str_split($str);
$arr2 = str_split($str, 3);
echo '
';';print_r($arr1);
print_r($arr2);
echo '
>
效果如下:
5.15 计算字符串的Hash(哈希)
所谓的哈希(Hash)也叫散列,它就是指把任意长度的输入(又叫做预映射),通过散列算法,变换成固定长度的输出,该输出就是散列值。
Hash主要用于信息安全领域的加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,这个编码,叫做Hash值。也可以说,Hash就是找到一种数据内容和数据存放地址之间的映射关系。常见的Hash算法有MD5,SHA1等。
PHP中提供了对应的函数,完成对字符串做MD5哈希计算的函数,也提供函数完成SHA1哈希计算的函数,这两个函数分别是md5()和sha1(),下面分别加以简要说明。函数md5()的语法如下所示。
string md5(string $str )
该函数用来计算参数字符串$str的MD5哈希,另外一个计算哈希的函数sha1()的语法如下所示。
string sha1(string $str )
$str1 = 'This is a secret';
$str2 = 'root';
echo '原字符串:';
echo '
';echo 'str1='.$str1;
echo '
';echo 'str2='.$str2;
echo '
';echo '
';
echo '使用md5加密:';
echo '
';echo "md5($str1)=".md5($str1);
echo '
';echo "md5($str2)=".md5($str2);
echo '
';echo '
';
echo '使用sha1加密:';
echo '
';echo "sha1($str1)=".sha1($str1);
echo '
';echo "sha1($str2)=".sha1($str2);
>
效果如下:
5.16 小结
本章通过介绍一些主要的字符串处理函数,来学习在PHP程序中如何完成对字符串的操作。这些函数都是比较基本的,读者务必掌握。本章讲到的函数包括:将字符串分割后存入数组的函数explode()。将数组中的元素合并成字符串的函数implode()。比较两个字符串大小的函数strcmp()。字符串替换函数str_replace()。输出字符串的语言结构echo和print。字符串格式化函数sprintf()。
截取字符串的函数substr()。删除字符串开头和末尾空白字符的函数ltrim()、rtrim()、trim()。获取字符串长度的函数strlen()。对字符串做大小写转换的函数strtolower()和strtoupper()。处理含有HTML标记的函数htmlentities()、htmlspecialchars()和html_entity_decode()。重复生成字符串的函数str_repeat()。分析字符串到变量的函数parse_str()。转换字符串到数组的函数str_split()。计算字符串Hash的函数md5()。和sha1()。
30.格式化字符串
Printf()函数和sprintf()函数实现的功能与echo相同,但是有返回值(成功返回true,失败返回false).
不过printf()函数和sprintf()函数还可以实现一些更复杂的格式输出,这两个函数 功能基本相同,pringf()函数是将一个格式化的字符串输出到浏览器,而sprintf()函数式返回一个格式化了的字符串。
Void printf(string format[,mixed args””])
String sprint(string formate[,mexed args””])
Printf是和c语言中一样的。
$total = 2.5;
echo "total num is $total."."
";
printf("total num is %s.",$total);
>
效果如下:
31.改变字符串中字母的大小写
Strtoupper():将字符串转换为大小
Strtolower():将字符串转换为小写
Uefirst():如果字符串的第一个字符是字母,就转换为大写
Ucwords():将字符串中的每一个单词的第一个字母转换为大写。
32.获取和转换ASCII
String chr(int ascii):把ASCII编码转换为字符串
Int ord(char char):把字符转换为ASCII编码
中存在的系统变量有很多,比如:
echo "Operation System:". PHP_OS;
echo "
";
echo "Php version:" . PHP_VERSION . "n";
>
效果:
33.文件包含:
33.1使用include
Include(string filename)
Include 进来的文件里面的变量和包含它的文件使用的是同一个变量
$a =100;
echo "$a: $a n";
include ('');
echo "$a: $a n";
echo "$b: $b n" ;
>
:
$a =200;
$b =400;
>
效果如下:
对于被包含的文件(如),我们可以使用return 语句来终止它的执行,也可以使用return语句来返回一个值.
$a =100;
echo include '';
>
:
return $a/2;
>
效果如下:
Include_once语句和include的区别在于:如果该文件中的代码已经被包含了,则不会再次被包含,
就是只能include一个文件一次。
33.2 使用require
Require的作用和include是一样的,唯一不同在于include是执行是包含,而require是先全部包含,不管会不会执行都包含,然后再执行。
如果require发现找不到文件,就会报错,而include发现找不到文件,只会警告,程序继续往下走。
34.系统函数
Rand:int rand([int min],[int max]):min和max都是可选值,返回一个在min和max自己的随机整数。
Round:float round(float val[, int precision]),对浮点数val取四舍五入,小数后的位数为precision指定,可选,默认为0.
Floor:floor(float value):舍去法取整。
Ceil:ceil(float value):进一法取整
35.全局数组:
$_SERVER[]:包含一些诸如头信息,路径和脚本等信息的数组。
元素:
1.
$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言
显示:zh-cn
2.
$_SERVER['REMOTE_ADDR'] //当前用户 IP 。
显示:127.0.0.1
3.
$_SERVER['REMOTE_HOST'] //当前用户主机名
显示:
4
$_SERVER['REQUEST_URI'] //URL
显示:/
5
$_SERVER['REMOTE_PORT'] //端口。
显示:3864
6
$_SERVER['SERVER_NAME'] //服务器主机的名称。
显示:127.0.0.1
7
$_SERVER['PHP_SELF']//正在执行脚本的文件名
显示:/
8
$_SERVER['argv'] //传递给该脚本的参数。
显示:ARRAY
9
$_SERVER['argc'] //传递给程序的命令行参数的个数。
显示:0
10
$_SERVER['GATEWAY_INTERFACE']//CGI 规范的版本。
显示: CGI/1.1
11
$_SERVER['SERVER_SOFTWARE'] //服务器标识的字串
显示:Apache/2.0.52 (Win32) PHP/5.2.1
12
$_SERVER['SERVER_PROTOCOL'] //请求页面时通信协议的名称和版本
显示:HTTP/1.1
13
$_SERVER['REQUEST_METHOD']//访问页面时的请求方法
显示:GET
14
$_SERVER['QUERY_STRING'] //查询(query)的字符串。
显示:
15
$_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录
显示:D:/Program Files/Apache/www
16
$_SERVER['HTTP_ACCEPT'] //当前请求的 Accept: 头部的内容。
显示:*/*
17
$_SERVER['HTTP_ACCEPT_CHARSET'] //当前请求的 Accept-Charset: 头部的内容。
显示:
18
$_SERVER['HTTP_ACCEPT_ENCODING'] //当前请求的 Accept-Encoding: 头部的内容
显示:gzip,deflate
19
$_SERVER['HTTP_CONNECTION'] //当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
显示:Keep-Alive
20
$_SERVER['HTTP_HOST'] //当前请求的 Host: 头部的内容。
显示:127.0.0.1:8080
21
$_SERVER['HTTP_REFERER'] //链接到当前页面的前一页面的 URL 地址。
显示:127.0.0.1:8080/
22
$_SERVER['HTTP_USER_AGENT'] //当前请求的 User_Agent: 头部的内容。
显示:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR
2.0.50727)
23
$_SERVER['HTTPS']//如果通过https访问,则被设为一个非空的值(on),否则返回off
显示:
24
$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。
显示:D:/Program Files/Apache/www/
25
$_SERVER['SERVER_ADMIN'] #管理员信息
显示:*******
26
$_SERVER['SERVER_PORT'] #服务器所使用的端口
显示:8080
27
$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。
显示:Apache/2.0.52 (Win32) PHP/5.2.1 Server at 10.145.40.150 Port 8080
28
$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。
显示:
29
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。
显示 :/
30
$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
显示:
31
$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
显示:
32
$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型
$_ENV[]:包含环境变量的超全局数组
$_GET[]:是一个包含所有以HTTP GET方式传递的变量的超全局数组
$_POST[]:是一个包含所有以HTTP POST方式传递的变量的一个超全局数组。
$_FILES[]:是一个通过HTTP POST方式传递的已经上传文件项目组成的数组。
$_COOKIE[]:是一个通过HTTP Cookies传递的变量所组成的一个超全局数组
$_SESSION[]:是一个当前脚本中session变量的一个超全局数组
$_REQUEST[]是一个包含$_GET[],$_POST[],和$_COOKIE[]数组中全部内容的超全局数组
和echo
Print只支持一个参数,而echo支持多个参数
Print输出字符串总是返回值1,而echo输出字符串将不返回值。
正则表达式:
元字符 用途
.
所有单个字符
|
分隔多个模式
-
指定一个字符范围
^
出现在行头或在字符串开头
$
匹配行尾货字符串尾
d
匹配所有的一位数字
D
d的相反,匹配所有的非数字字符
i
不区分大小写
[A-Z]
匹配所有A到Z的任意一个
[^A-Z]
匹配所有非 A到Z的任意
X?
出现0次或1次
X*
零个或多个
X+
一个或多个
X{n}
匹配n个
X{n,m}
匹配n到m个
b
代表单词的开头或结尾
正则表达式返回正则表达式匹配的结果。
进行正则表达式匹配函数:
preg_match(string 正则表达式, string 需要匹配的字符串[,array 用于存储匹配结果的数组(可选)][,PREG_OFFET_CAPTURE标记是否也存储偏移量])。
返回的结果是返回匹配成功与否,如果成功,就返回1,否则就返回0.
$str = "PHP is the web scripting language web";
$pattern = "/web/";
$count = preg_match($pattern, $str,$result);
print_r($result);
echo "
";
echo "$count";
>
效果:
$str = "PHP is the web scripting language web";
$pattern = "/web/";
$count = preg_match($pattern, $str,$result,PREG_OFFSET_CAPTURE);
print_r($result);
echo "
";
echo "$count";
>
效果如下:
我们可以看到,结果数组多了一条数据,记录匹配成功的偏移量是11
上面那个函数是只能匹配第一个,匹配到就结束了。
2.如果是preg_match_all()就可以全部匹配
最后一个可选参数有三个选项:
PREG_PATTERN_ORDER(默认)
PREG_SET_ORDER
PREG_OFFSET_CAPTURE
3.匹配数组:preg_grep
Array preg_grep(string $pattern, array $input[,int $flags])
返回值是数组,用键值表示
Flag:如果是PREG_GREP_INVERT,则返回的是不匹配的。
$arr = array(".123","12.34","1234","123.4","123.","0.1234");
$pattern ="/^(d+)?.d+$/";
$result = preg_grep($pattern, $arr);
$result1 = preg_grep($pattern, $arr,PREG_GREP_INVERT);
print_r($result);
echo "
";
print_r($result1);
>
上面是匹配的数据,下面是不匹配的数据
4.正则表达式的搜索以及替换
Mixed preg_replace(mixed $正则表达式,mixed $准备进行替换的字符串或正则表达式,mixed $需要匹配的字符串[,int 次数])
如果次数缺省或为-1,就表示全部替换。
返回结果为替换后的东西。
$arr = "PHP is a web language web develop";
$pattern ="/web/";
$repstr = "zhulei";
$result = preg_replace($pattern, $repstr, $arr);
echo $result;
>
效果如下:
5.用正则表达式进行字符串分割
Array preg_split(string $正则表达式,string 字符串,[int limit],[int flags])
以正则表达式搜出来的东西进行分割,返回数组。
Flags有三个选择:PREG_SPLIT_ON_EMPTY:只返回非空的成分
PREG_SPLIT_DELIM_CAPTURE:定界符模式中的括号表达式也会被捕捉并返回
PREG_SPLIT_OFFSET_CAPTURE:返回的同时加每个的偏移量
$str = 'PHP hypertext language programming ';
$arr1 = preg_split("/ /", $str,-1,PREG_SPLIT_NO_EMPTY);
$arr2 = preg_split("/ /", $str,-1,PREG_SPLIT_DELIM_CAPTURE);
$arr3 = preg_split("/ /", $str,-1,PREG_SPLIT_OFFSET_CAPTURE);
print_r($arr1);
echo "
";
print_r($arr2);
echo "
";
print_r($arr3);
echo "
";
>
效果如下:
面向对象的PHP
1.类定义
class className
{
//类成员列表
//类方法列表function
}
定义类的属性,首先要定义它的访问权限public/private/protect
2.在执行对象时自动定义一个$this的特殊变量,该变量表示对对象本身的引用,可以通过
$this ->的方式来引用对象的所有属性和方法。
3.构造函数
function __construct()
{
}
析构函数时构造函数的相反,在对象引用结束时,自动会调用析构函数。
4.类的继承:
类的继承关键字为:extends
在PHP中,使用parent表示父类,使用self表示当前类
使用parent 和self进行属性和方法的调用时,需要使用范围解析操作符:::
5.子类和父类的属性和方法调用:
方法的调用:
$this->方法名();如果子类中有该方法则调用的是子类中的方法,若没有则是调用父类中的。
parent::则始终调用的是父类中的方法。
变量的调用:
$this->变量名;如果子类中有该变量则调用的是子类中的,若没有则调用的是父类中的
注意:子类无法访问父类的私有属性,那为什么访问却没有出错呢?其实是在子类中新建了一个变量而已,因为PHP是弱定义的语言。
class Animal
{
public $name = "Animal name";
public $age =18;
public function cry()
{
echo "Animal can cry";
echo "
";
}
}
class cat extends Animal
{
public $name;
public $color;
function __construct($selfname,$color,$parentname,$age)
{
$this->name = $selfname;
$this->color =$color;
$this->age=$age;
}
public function cry()
{
echo "cat can cry";
echo "
";
}
public function printout()
{
self::cry();
parent::cry();
}
}
$cat = new cat("cat name","red","animalname",19);
$cat->printout();
echo "this.$name is $cat->name";
>
echo "
";
echo "this.$age is $cat->age";
echo "
";
echo "this.$color is $cat->color";
echo "
";
效果如下:
6.类的常量
const 常量名 = value;
可以在类中通过self::常量名来调用。
类的常量属于类本身,不能被继承和访问。
7.访问权限
public:可以被继承,也可以通过实例访问
protect:可以被继承,不能通过实例访问
private:不能被继承,也不能通过实例访问
8.静态属性和方法
静态属性和类的常量一样,只属于类本身,通过static来定义。
方法也是一样的。
9.字符串转换函数:__toString()函数
这个函数和构造函数一样,都是系统内置的函数。
如果我们直接用print 或echo 来打印对象实例名(注意是对象实例名),就会自动调用这个函数。
class Animal
{
public $name = "Animal name";
public $age =18;
function __toString()
{
echo "you are printing the class";
echo "
";
return $this->name;
}
}
$animal = new Animal();
echo $animal;
>
效果如下:
10.内置克隆方法__clone()
当我们进行对对象实例进行克隆,克隆出一个新的对象实例出来时,就会自动调用类中的这个克隆函数。
class Animal
{
public $name = "Animal name";
public $age =18;
function __clone()
{
echo "you are wanting to clone a new clas object";
echo "
";
}
}
$animal = new Animal();
$coloneNewAnimal = clone $animal;
echo "name is" . $coloneNewAnimal->name;
echo "
";
echo "age is" . $coloneNewAnimal->age;
echo "
";
>
效果如下:
11.__get()和__set()
我们一般情况下,会把类中的属性设置为private,然后通过get和set函数来取得和设置属性的值,在Java中,需要对每一个属性写get和set的值,这很麻烦。
在PHP中,只要写一次,全部通用。
//__get()方法用来获取私有属性
function __get($property_name)
{
if(isset($this->$property_name))
{
return($this->$property_name);
}else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
版权声明:本文标题:PHP从入门到精通(免费) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1708692139h529459.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论