当前位置: 编程技术>php
本页文章导读:
▪php学习 数组课件第1/2页
下标:数组中的识别名称 也就是字符串或整数在数组中的代号 数组中有几个索引值就被称为几维数组。 索引值:索引是对数据库表中一列或多列的值进行排序的一种结构。 数组分.........
▪php学习 字符串课件
语法 字符串string可以有三种方法定义 ‘ '(单引号)“”(双引号) <<<(定界符) 转义序列可以用\ \\解释为\ 双引号的最大特点是 变量名会被变量值代替 定界符可以原样输出 .........
▪php学习 函数 课件
代码重用 include() require() 这两个函数都是用来引用文件的,区别是当处理失败时include()产生一个警告而require()是一个致密错误 include_once() require_once() 这两个函数与include()与require()是一样的 .........
[1]php学习 数组课件第1/2页
来源: 互联网 发布时间: 2013-11-30
下标:数组中的识别名称 也就是字符串或整数在数组中的代号
数组中有几个索引值就被称为几维数组。
索引值:索引是对数据库表中一列或多列的值进行排序的一种结构。
数组分类
在PHP数组被分为两种:
索引数组:索引(indexed)索引值是整数,以0开始,当通过位置来标识东西时用索引数组。
关联数组:关联(associative)关联以字符串做索引值,索引值为列名,用语访问列的数据。
数组通常用赋值的方式
一般情况下数组赋值有两种方式:
$a[1]="dsadsadsa";
$b[2]="dsadsadsad";
使用array函数:
$a=array("dsads","dsadsa",321312);
一维数组:数组的索引值(下标)只有一个的时候称之为一维数组。
数组直接赋值的格式:
$数组变量名[索引值]=资料内容;
注意:索引值可以是字符串也可以是整数 但是1与“1”是不同的 它们一个属于整数一个属于字符串。
同名没有给予索引值的数组是按照顺序排列的。
实例:
<?php
$a=array(1,2,3,4,5,6);
$b=array("one", "two", "three");
$c=array(0=>"aaa",1=>"bbb",2=>"ccc");
$d=array("aaa",6=>"bbb","ccc");
$e=array("name"=>"zhang", "age"=>20);
?>
二维数组
多维数组的格式:
$a[0][]="dsadas";
$a[0][]="dsadsa"; 这组是$a下的0索引值下的1和2
如果用array函数声明格式如下:
$a=array("dsadsa","dsadas",21,array("dsadsa","dsadas"));
数组的遍历
foreach循环结构:
foreach 仅用与数组的循环 两种格式
foreach(array_exprssion(数组表达) as $value);
foreach(array_exprssion(数组表达) as $key=>$value);
第一种格式遍历给定了array_exprssion数组。每一次循环中当前的值都被赋给我$calue,并且数组内部的指针向前移动一步。
第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。此外注意foreach 所操作的是指定数组的一个拷贝,而不是该数组本身
$arr=array(10,20,30,40,50,60);
foreach($arr as $k=>$v){
echo "$k=>$v<br>";
}
输出结果:0=>10 1=>20 2=>30 3=>40 4=>50 5=>60//下标=>整数
联合使用list(),each()和while循环
each():
$arr=array(1,2,3,4,5);
$a=each($arr);
print_r($a);
输出结果:Array ( [1] => 1 [value] => 1 [0] => 0 [key] => 0 )
拿取数组第一位的值value 下标key
list():
$arr3=array("a","b","c");
list($key,$value)=each($arr3);
echo $key."<br>".$value;
输出结果:0 a list()可以说是用一步操作给一组变量赋值 仅能用于数字索引的数组并假定数字索引从 0 开始。
while循环
$arr=array(1,2,3,4,5,6,7,8,9,);
while(list($key,$value)=each($arr)){
$key++;
echo $key."=>".$value;
echo "<br>";
}
echo "<br>";
输出结果:1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9
reset()数组指针重定向
在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。
is_array检测变量是否为数组真返回ture假false
$arr=array(1,2,3,4,5,6,"saas");
while(list($k,$v) = each($arr))
{
if(is_array($arr))
{
$x += $v;
echo $x;
}
else
{
$x += $k;
}
}
这个范例不能完全体现is_array的功能,但是可以参考。
数组的指针
next():负责将指针向后移动
prve():负责将指针向前移动
end():会将指针指向数组最后一个元素
reset():将目前指针无条件移至第一个索引位置
语法格式:mixed next(数组名称)
$arr=(array(1,2,3,4,5));
echo end($arr);
输出结果:5
key()与current()和count()
key()的函数是读取目前指针所指向的资料的索引值。
current()的函数则是读取目前指针所指向资料的内容资料。
count()的函数是用来计算数组中所有元素的个数,也就是说函数会传回目标数组的长度值。
格式:int count(数组名称);
key():从关联数组中取得键名
$array = array('fruit1' => 'apple','fruit2' => 'orange','fruit3' => 'grape','fruit4' => 'apple','fruit5' => 'apple');
while ($fruit_name = current($array)) {
if ($fruit_name == 'apple') {
echo key($array).'<br />';
}
next($array);
}
输出结果:fruit1,fruit4,fruit5
current():返回数组中的当前单元
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport); // $mode = 'foot';
$mode = end($transport); // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';
注意看范例 返回数组中的当前单元
count():计算数组中单元的个数
$arr=array(1,2,3,4,5,6);
echo count($arr);
输出结果:6
array_change_key_case()
array_change_key_case返回字符串键名全为小写或者大写的数组
其中包含的形态函数有两个[CASE_UPPER]转换为大写,[CAS_LOWER]转换为小写。
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
输出结果:Array ( [FIRST] => 1 [SECOND] => 4 )
array_chunk()
array_chunk()次函数会将目标数组的资料内容,以指定索引个数,分解成数个小型数组包含在原数组中。
$arr=array(1,2,3,4,5,6);
$a=array_chunk($arr,3);
print_r($a);
输出结果:Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) )
也就是等于用数组单元个数的总和除以3
array_count_values
array_count_values 用来计算目标数组中各值出现的次数
语法格式:array_count_values(目标数组)
此函数所传回结果值,会以原数组的内容资料作为索引,以数组的形态表现。
$arr=array(1,2,3,3,2,6);
print_r(array_count_values($arr));
输出结果:Array ( [1] => 1 [2] => 2 [3] => 2 [6] => 1 )
数组中有几个索引值就被称为几维数组。
索引值:索引是对数据库表中一列或多列的值进行排序的一种结构。
数组分类
在PHP数组被分为两种:
索引数组:索引(indexed)索引值是整数,以0开始,当通过位置来标识东西时用索引数组。
关联数组:关联(associative)关联以字符串做索引值,索引值为列名,用语访问列的数据。
数组通常用赋值的方式
一般情况下数组赋值有两种方式:
$a[1]="dsadsadsa";
$b[2]="dsadsadsad";
使用array函数:
$a=array("dsads","dsadsa",321312);
一维数组:数组的索引值(下标)只有一个的时候称之为一维数组。
数组直接赋值的格式:
$数组变量名[索引值]=资料内容;
注意:索引值可以是字符串也可以是整数 但是1与“1”是不同的 它们一个属于整数一个属于字符串。
同名没有给予索引值的数组是按照顺序排列的。
实例:
<?php
$a=array(1,2,3,4,5,6);
$b=array("one", "two", "three");
$c=array(0=>"aaa",1=>"bbb",2=>"ccc");
$d=array("aaa",6=>"bbb","ccc");
$e=array("name"=>"zhang", "age"=>20);
?>
二维数组
多维数组的格式:
$a[0][]="dsadas";
$a[0][]="dsadsa"; 这组是$a下的0索引值下的1和2
如果用array函数声明格式如下:
$a=array("dsadsa","dsadas",21,array("dsadsa","dsadas"));
数组的遍历
foreach循环结构:
foreach 仅用与数组的循环 两种格式
foreach(array_exprssion(数组表达) as $value);
foreach(array_exprssion(数组表达) as $key=>$value);
第一种格式遍历给定了array_exprssion数组。每一次循环中当前的值都被赋给我$calue,并且数组内部的指针向前移动一步。
第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。此外注意foreach 所操作的是指定数组的一个拷贝,而不是该数组本身
$arr=array(10,20,30,40,50,60);
foreach($arr as $k=>$v){
echo "$k=>$v<br>";
}
输出结果:0=>10 1=>20 2=>30 3=>40 4=>50 5=>60//下标=>整数
联合使用list(),each()和while循环
each():
$arr=array(1,2,3,4,5);
$a=each($arr);
print_r($a);
输出结果:Array ( [1] => 1 [value] => 1 [0] => 0 [key] => 0 )
拿取数组第一位的值value 下标key
list():
$arr3=array("a","b","c");
list($key,$value)=each($arr3);
echo $key."<br>".$value;
输出结果:0 a list()可以说是用一步操作给一组变量赋值 仅能用于数字索引的数组并假定数字索引从 0 开始。
while循环
$arr=array(1,2,3,4,5,6,7,8,9,);
while(list($key,$value)=each($arr)){
$key++;
echo $key."=>".$value;
echo "<br>";
}
echo "<br>";
输出结果:1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9
reset()数组指针重定向
在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。
is_array检测变量是否为数组真返回ture假false
$arr=array(1,2,3,4,5,6,"saas");
while(list($k,$v) = each($arr))
{
if(is_array($arr))
{
$x += $v;
echo $x;
}
else
{
$x += $k;
}
}
这个范例不能完全体现is_array的功能,但是可以参考。
数组的指针
next():负责将指针向后移动
prve():负责将指针向前移动
end():会将指针指向数组最后一个元素
reset():将目前指针无条件移至第一个索引位置
语法格式:mixed next(数组名称)
$arr=(array(1,2,3,4,5));
echo end($arr);
输出结果:5
key()与current()和count()
key()的函数是读取目前指针所指向的资料的索引值。
current()的函数则是读取目前指针所指向资料的内容资料。
count()的函数是用来计算数组中所有元素的个数,也就是说函数会传回目标数组的长度值。
格式:int count(数组名称);
key():从关联数组中取得键名
$array = array('fruit1' => 'apple','fruit2' => 'orange','fruit3' => 'grape','fruit4' => 'apple','fruit5' => 'apple');
while ($fruit_name = current($array)) {
if ($fruit_name == 'apple') {
echo key($array).'<br />';
}
next($array);
}
输出结果:fruit1,fruit4,fruit5
current():返回数组中的当前单元
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport); // $mode = 'foot';
$mode = end($transport); // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';
注意看范例 返回数组中的当前单元
count():计算数组中单元的个数
$arr=array(1,2,3,4,5,6);
echo count($arr);
输出结果:6
array_change_key_case()
array_change_key_case返回字符串键名全为小写或者大写的数组
其中包含的形态函数有两个[CASE_UPPER]转换为大写,[CAS_LOWER]转换为小写。
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
输出结果:Array ( [FIRST] => 1 [SECOND] => 4 )
array_chunk()
array_chunk()次函数会将目标数组的资料内容,以指定索引个数,分解成数个小型数组包含在原数组中。
$arr=array(1,2,3,4,5,6);
$a=array_chunk($arr,3);
print_r($a);
输出结果:Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) )
也就是等于用数组单元个数的总和除以3
array_count_values
array_count_values 用来计算目标数组中各值出现的次数
语法格式:array_count_values(目标数组)
此函数所传回结果值,会以原数组的内容资料作为索引,以数组的形态表现。
$arr=array(1,2,3,3,2,6);
print_r(array_count_values($arr));
输出结果:Array ( [1] => 1 [2] => 2 [3] => 2 [6] => 1 )
[2]php学习 字符串课件
来源: 互联网 发布时间: 2013-11-30
语法
字符串string可以有三种方法定义
‘ '(单引号)“”(双引号) <<<(定界符)
转义序列可以用\ \\解释为\
双引号的最大特点是 变量名会被变量值代替
定界符可以原样输出 html格式
打印字符串有两种方法
echo 它属于语言结构,不是真正的函数,它和print的区别在于可以接受多个参数
print 语法bool(布尔行)print(string agr)次函数输出字符串 如果成功返回1 失败返回0 列如传输中如果客户的浏览器突然挂掉 则会造成失败的情景
字符串处理函数
ltrim 语法格式:string ltrim(string str); 删除字符串的前导空格
rtrim 语法格式:string rtrim(string str); 删除字符串的后缀空格
trim 语法格式:string rtim(string str); 删除祖父穿的两端空格
strrev 语法格式:string strrev(string str); 颠倒字符串 将字符串前后颠倒
strtolower 语法格式:string strtolower (string str); 将字符串全部变成小写
strtoupper 语法格式:string strtoupper (string str); 将字符串全部变成大写
ucfirst 语法格式:string ucfirst(string str); 将字符串的首字母改成大写
ucworde 语法格式:string ucworde(string str); 将字符串的每个字的首字母都改成大写
格式化字符串以便显示
sprintf此函数将字符串格式化
sprintf()语法格式string sprintf(string format,mixed[args]...)
范例:
$a=sprintf ("%'*6s","kkk")
echo $a;
输出结果:***kkk
b 整数转成二进位。
c 整数转成对应的 ASCII 字符。
d 整数转成十进位。
f 单倍精确度数字转成浮点数。
o 整数转成八进位。
s 转成字符串。
x 整数转成小写十六进位。
X 整数转成大写十六进位。
printf 输出格式化字符串 返回值整数
语法格式:int printf(string format, mixed [args]...);
范例
printf("%d--%s--%x",72,72,72);
输出结果:72--72--48
分割与拼状字符串
explode语法格式:array explode ( string separator, string string [, int limit] )
implode语法格式:string implode(shring glue,array pieces)把数组功能连接成字符串
字符串比较
strcmp语法格式:int strcmp(string 1,string 2) 返回值为整数 子字符串
strcmp次字符串用来比较大小 负数表示1小于2 正数表示1大于2 0表示相等
strlen语法格式:int strlen(string str);取得字符串长度 返回值整数
substr语法格式:string substr(string string, int start, int [length]);
取得部分字符串 string为字符串 开始位到停止取几个字符 若省略停止则去到尾 若开始设为负数 表示从后象前取
strstr string strstr(string haystack, string needle); 返回字符串中某字符串开处至结束字符串 就是说以某处为界点取后段段字符串
strrchr 语法格式:string strrchr(string haystack, string needle); 取得字符串最后出现的位置 从后向前截取字符串没找到返回false
strpos 语法格式:int strpos(string haystack, string needle, int [offset]); 寻找字符串最先出现的位置默认从0开始 如果找不到返回false
strrpos 语法格式:int strrpos(string haystack, char needle); 寻找字符串最后出现的位置 找不到返回false 返回值整数
字符串填补
str_pad语法格式 可以用于一些敏感信息的保护
str_pad($input, 10); // produces "Alien "
str_pad($input, 10, "-=", STR_PAD_LEFT); // produces "-=-=-Alien"
str_pad($input, 10, "_", STR_PAD_BOTH); // produces "__Alien___"
str_pad($input, 6 , "___"); // produces "Alien_"
STR_PAD_LEFT 字符串左添补
STR_PAD_RIGHT 字符串右添补
STR_PAD_BOTH 字符串两端添补
字符串的替换
str_replace() 函数替换
有三种方法
str_replace("l","@","hello"); //替换什么 用什么替换 替换谁
$arr2=array("%color%","%title%","%body%");
$arr3=array("red","hello","world");
echo str_replace($arr2,$arr3,"<font color=%color% title=%title%>%body%</font>");
摸版的方法
字符串翻译
strtr()一个重要的替换函数 也叫字符串翻译
strtr也有两种调用方式
strtr(string $str, string $from, string $to)
$arr5=array("hello"=>"hi","hi"=>"hello");
echo strtr("hello is hi",$arr5);
就是将什么翻译成什么
strtr(string $str, array $replace_pairs)
html处理
HTML实体的处理
htmlentities(); (指定转换模式和字符集编码)
ENT_COMPAT(默认):指定转换双引号但是保留单引号
ENT_QUOTES:表示同时转换双引号和单引号
ENT_NOQUOTES:表示两个都不转换
htmlspecialchars(); (把<>等特殊符号转换成实体<>)
语法格式
$str="<p title='hhh'>中国</p>";
echo htmlentities($str); //转换编码
echo htmlentities($str,ENT_QUOTES,"EUC-JP");//单引号双引号都转换 后面是字的编码
引号的处理
stripslashes(); (是addslashes的反函数,显示转移后的字符)
addslashes(); (把' ” \ NULL(\0) 4个字符前添加\显示)
HTMl标签的清理
strip_tags();(清理字符串中的HTML超文本字符)
url处理
除了对HTML文字的处理, 在WEB开发时还要对URL地址进行处理。处理URL主要包括:
对URL字符串的解析
parse_str();(解析请求字符串转变成数组)
parse_url();(解析完整的URL转变成数组)
URL编码处理
rawurlencode(); (替换所有非字母数字的字符,变为%后面跟两位16进制)
urlencode(); (替换所有非字母数字的字符,变为%后面跟两位16进制,空格变为+号)
rawurldecode(); (对已%编码的URL进行解析还原)
urldecode(); (对已%##编码的URL进行解析还原)
构造查询字符串等。
http_build_query();(生成 url-encoded 之后的请求字符串 )
php字符串.rar
[3]php学习 函数 课件
来源: 互联网 发布时间: 2013-11-30
代码重用
include()
require()
这两个函数都是用来引用文件的,区别是当处理失败时include()产生一个警告而require()是一个致密错误
include_once()
require_once()
这两个函数与include()与require()是一样的 ,区别是include_once与require_once只能引用一次
自定义函数
自定义函数用function()来声明
函数的优越性:
控制程序设计的复杂性
提高软件的可靠性
提高软件的开发效率
提高软件的可维护性
提高程序的重用性
自定义函数的语法格式:
function 函数名称(参数1,参数2){
程序的内容叙述;
return;
}
函数名称(参数1,参数2);
return 返回值; //返回值也可以是一个表达式
自定义函数名不区分大小写。命名函数时不可使用已声明的函数,或PHP内建的函数名称。
判断函数是否存在:function_exists(函数名称);
变量的范围
变量的能见度是指变量在程序中的可作用范围。
大致上变量会依据声明分为两种:局部变量与全局变量
局部变量:
在函数之中声明的变量就是局部变量,并且该变量只有在函数范围之中才能加以使用。如果其它程序局部需要调用使用该变量值时,必须透过「return」指令,来将其传回至主程序区块以作后续处理。
全局变量:
在函数范围之外所声明的变量就是全局变量。由于函数可以视为单独的程序片段,所以局部变量会复盖全局变量的能见度,因此在函数中并无法直接调用使用全局变量。
函数中若要使用全局变量时,必须要利用global关键字定义目标变量,以告诉函数主体此变量为全局。
也可以使用预定义的全局变量数组$GLOBALS.这是一个特殊变量在程序运行时自动创建。
echo $GLOBALS[“A”];
通过unset($var)可以手动删除变量,变量会在内存中被释放,也就不在全局作用域中了。
使用require与include包含不会影响作用域
静态变量
声明函数变量为静态的(static)。
一个静态变量在所有对该函数的调用之间共享,并且仅在脚本的执行期间函数第一次被调用时被初始化。要声明函数变量为静态的用关键字static。通常,静态变量的第一次使用时赋予一个初始值。
参数的传递
按值传递参数:
父程序直接传递指定的值或是变量给函数使用。由于所传递的值或变量,与函数里的数值分别储存于不同的内存区块,所以当函数对所导入的数值作了任何变动时,并不会对父程序造成直接影响。
按址传递参数(用“&”符号实现)
相对于按值传递模式,并不会将父程序中的指定数值或目标变量传递给函数,而是把该数值或变量的内存储存区块相对地址导入函数之中。因此当该数值在函数中有任何变动时,会连带对父程序造成影响。
默认参数
默认参数必须列在所有没有默认值参数的后面。
function fun_sum($a,$b=0,$c=0){
return $a+$b+$c;
}
echo fun_sum(10,20);
echo fun_sum(10,20,30);
0为默认参数
任意数量的参数列表
func_get_args() //返回一个数组,包含所有参数
func_num_args() //返回个数的参数总数
func_get_arg() //接收一个数字参数,返回指定参数 按下标查找数值
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />\n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "<br />\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
}
}
foo(1, 2, 3);
输出结果:Number of arguments: 3
Second argument is: 2
Argument 0 is: 1
Argument 1 is: 2
Argument 2 is: 3
变量函数
这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且将尝试执行它。除了别的事情以外,这个可以被用于实现回调函数,函数表等等。
递归调用
所谓的函数递归调用,就是函数可以在其声明的执行叙述之中调用执行自己。
通常在此类型的函数之中会附加一个条件判断叙述,以判断是否需要执行递归调用,并且在特定条件下终止函数的递归调用动作,把目前流程的主控权交回上一层函数执行。因此当某个执行递归调用的函数,没有附加条件判断叙述时可能会造成无限循环的错误情形.
函数递归调用最大的好处在于可以精简程序中繁杂重复调用程序,并且能以这种特性来执行一些较为复杂的运算动作。
此课件为phpchina教学课件
1210491967_9664e02c.rar
include()
require()
这两个函数都是用来引用文件的,区别是当处理失败时include()产生一个警告而require()是一个致密错误
include_once()
require_once()
这两个函数与include()与require()是一样的 ,区别是include_once与require_once只能引用一次
自定义函数
自定义函数用function()来声明
函数的优越性:
控制程序设计的复杂性
提高软件的可靠性
提高软件的开发效率
提高软件的可维护性
提高程序的重用性
自定义函数的语法格式:
function 函数名称(参数1,参数2){
程序的内容叙述;
return;
}
函数名称(参数1,参数2);
return 返回值; //返回值也可以是一个表达式
自定义函数名不区分大小写。命名函数时不可使用已声明的函数,或PHP内建的函数名称。
判断函数是否存在:function_exists(函数名称);
变量的范围
变量的能见度是指变量在程序中的可作用范围。
大致上变量会依据声明分为两种:局部变量与全局变量
局部变量:
在函数之中声明的变量就是局部变量,并且该变量只有在函数范围之中才能加以使用。如果其它程序局部需要调用使用该变量值时,必须透过「return」指令,来将其传回至主程序区块以作后续处理。
全局变量:
在函数范围之外所声明的变量就是全局变量。由于函数可以视为单独的程序片段,所以局部变量会复盖全局变量的能见度,因此在函数中并无法直接调用使用全局变量。
函数中若要使用全局变量时,必须要利用global关键字定义目标变量,以告诉函数主体此变量为全局。
也可以使用预定义的全局变量数组$GLOBALS.这是一个特殊变量在程序运行时自动创建。
echo $GLOBALS[“A”];
通过unset($var)可以手动删除变量,变量会在内存中被释放,也就不在全局作用域中了。
使用require与include包含不会影响作用域
静态变量
声明函数变量为静态的(static)。
一个静态变量在所有对该函数的调用之间共享,并且仅在脚本的执行期间函数第一次被调用时被初始化。要声明函数变量为静态的用关键字static。通常,静态变量的第一次使用时赋予一个初始值。
参数的传递
按值传递参数:
父程序直接传递指定的值或是变量给函数使用。由于所传递的值或变量,与函数里的数值分别储存于不同的内存区块,所以当函数对所导入的数值作了任何变动时,并不会对父程序造成直接影响。
按址传递参数(用“&”符号实现)
相对于按值传递模式,并不会将父程序中的指定数值或目标变量传递给函数,而是把该数值或变量的内存储存区块相对地址导入函数之中。因此当该数值在函数中有任何变动时,会连带对父程序造成影响。
默认参数
默认参数必须列在所有没有默认值参数的后面。
function fun_sum($a,$b=0,$c=0){
return $a+$b+$c;
}
echo fun_sum(10,20);
echo fun_sum(10,20,30);
0为默认参数
任意数量的参数列表
func_get_args() //返回一个数组,包含所有参数
func_num_args() //返回个数的参数总数
func_get_arg() //接收一个数字参数,返回指定参数 按下标查找数值
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />\n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "<br />\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
}
}
foo(1, 2, 3);
输出结果:Number of arguments: 3
Second argument is: 2
Argument 0 is: 1
Argument 1 is: 2
Argument 2 is: 3
变量函数
这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且将尝试执行它。除了别的事情以外,这个可以被用于实现回调函数,函数表等等。
递归调用
所谓的函数递归调用,就是函数可以在其声明的执行叙述之中调用执行自己。
通常在此类型的函数之中会附加一个条件判断叙述,以判断是否需要执行递归调用,并且在特定条件下终止函数的递归调用动作,把目前流程的主控权交回上一层函数执行。因此当某个执行递归调用的函数,没有附加条件判断叙述时可能会造成无限循环的错误情形.
函数递归调用最大的好处在于可以精简程序中繁杂重复调用程序,并且能以这种特性来执行一些较为复杂的运算动作。
此课件为phpchina教学课件
1210491967_9664e02c.rar
最新技术文章: