自定义函数和内部函数考察点
Posted starshine-zhp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义函数和内部函数考察点相关的知识,希望对你有一定的参考价值。
变量的作用域和静态变量
变量的作用域
变量的作用域也称变量的范围,变量的范围即它定义的上下文背景(也是它的生效范围)。大部分的php变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件。
<?php $outer = ‘str‘;//全局变量 function myfunc() { echo $outer;//局部变量 } //全局变量默认不能直接拿到函数内部使用,如果要使用,需要用到global关键字 function myfunc2() { global $outer; echo $outer;// $GLOBALS[‘outer‘];//使用$GLOBALS数组也可以访问到全局变量 }
静态变量
静态变量仅在局部函数域中存在,但当程序执行离开次作用域时,其值并不会消失。
static关键字
- 仅初始化一次
- 初始化时需要赋值
- 每次执行函数该值会保留
- static修饰的变量是局部的,仅在函数内部有效
- 可以记录函数的调用次数,从而可以在某些条件下终止递归
<?php $count = 5; function get_count() { static $count; return $count++; } echo $count;// echo 5 ++$count;// $count = 6 echo get_count();//进入函数内部,static $count 并没有对$count 进行赋值,因此$count=NULL,return $count++,返回$count 的值,并对$count自增,因此此时echo的是NULL 也就是没有输出 echo get_count();//return $count++ ,返回$count,$count在上次自增后结果为1(NULL++ 是1),因此echo 1
函数的参数及参数的引用传递
默认情况下,函数的参数传递是值传递,要想在函数内部改变参数的值,需要使用引用传递。引用传递使用
&
。
引用传递只能传递变量,不允许传递值。也就是不能传递常量
<?php $a = 10; function test($a){ $a = 20; echo $a."<br>"; } test($a); //20 echo $a."<br>"; //10 // 函数内部传递进去的是变量的值,所以不管你在函数里面怎么改,都不会对函数外面的值产生影响 function test2(&$a){ $a = 20; echo $a."<br>"; } test2($a); //20 echo $a."<br>"; //20 // 这次给函数传递进去的不再是一个值了,而是变量的地址,所以在函数内部也可以改变函数外面的值 ?>
函数的返回值及引用返回
- 值通过使用可选的返回语句(return)返回
- 可以返回包括数组和对象的任意类型
- 返回语句会终止函数执行,将控制权交回函数调用处
- 省略return,返回值为NULL,不可有多个返回值(如果想返回多个值,可以反回一个数组)
- 从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符
&
外部文件的导入
include/require语句包含并运行指定文件
如果给出路径名则按照路径来找,
否则从include_path中查找,如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找
当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围。
加载过程中未找到文件则include 结构会发出一条警告(E_WARNING);这一点和require不同,require会发出一个致命错误(E_COMPILE_ERROR)
系统内置函数
时间日期函数
date()函数
date() 函数把时间戳格式化为更易读的日期和时间。
语法:
date(format,timestamp)
参数 | 描述 |
---|---|
format | 必需。规定时间戳的格式。 |
timestamp | 可选。规定时间戳。默认是当前时间和日期。 |
常用于日期的格式字符:
- d - 表示月里的某天(01-31)
- m - 表示月(01-12)
- Y - 表示年(四位数)
- 1 - 表示周里的某天
常用于时间的格式字符:
- h - 带有首位零的 12 小时小时格式
- i - 带有首位零的分钟
- s - 带有首位零的秒(00 -59)
- a - 小写的午前和午后(am 或 pm)
strtotime()函数
strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数)。
注意:如果年份表示使用两位数格式,则值 0-69 会映射为 2000-2069,值 70-100 会映射为 1970-2000。
注意:请注意 m/d/y 或 d-m-y 格式的日期,如果分隔符是斜线(/),则使用美洲的 m/d/y 格式。如果分隔符是横杠(-)或者点(.),则使用欧洲的 d-m-y 格式。为了避免潜在的错误,您应该尽可能使用 YYYY-MM-DD 格式或者使用 date_create_from_format() 函数。
mktime()函数
mktime(hour,minute,second,month,day,year,is_dst);
参数 | 描述 |
---|---|
hour | 可选。规定小时。 |
minute | 可选。规定分。 |
second | 可选。规定秒。 |
month | 可选。规定月。 |
day | 可选。规定天。 |
year | 可选。规定年。 |
is_dst | 可选。如果时间在夏令时 (DST) 期间,则设置为 1,否则设置为 0,若未知则设置为 -1(默认)。 |
time()函数
返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。(unix时间戳)
microtime()函数
返回当前 Unix 时间戳的微秒数。
microtime(get_as_float);
参数 | 描述 |
---|---|
get_as_float | 可选。当设置为 TRUE 时,规定函数应该返回浮点数,否则返回字符串。默认为 FALSE。 |
date_default_timezone_set()函数
设置默认时区
ip处理函数
ip2long()函数
函数 ip2long() 返回 IPV4 网络地址的长整型格式,从标准网络地址格式(点字符串)转化得到。
long2ip()函数
long2ip() 函数通过长整型的表达形式转化生成带点格式的互联网地址(例如:aaa.bbb.ccc.ddd )。
打印处理函数
print()函数
语言结构,只能打印一个变量
printf()
根据格式输出
print_r()
会将数组、对象格式化好之后输出
echo()
语言结构,可以打印多个变量,用逗号隔开
sprintf()
根据格式返回,不输出
var_dump()
会将数组、对象格式化好之后输出,并显示数据类型
var_export()
将数组格式化后输出,可返回合法的php代码
序列化及反序列化函数
serialize()函数
unserialize()函数
字符串处理函数
implode()函数
将一个一维数组的值转化为字符串
explode()函数
使用一个字符串分割另一个字符串
join()函数
implode()函数的别名
str_replace()函数
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。
如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace() 和 preg_replace()。
数组处理函数
array_keys()
返回数组中部分的或所有的键名
array_values()
返回数组中所有的值
array_diff()
计算数组的差集
array_intersect()
计算数组的交集
array_merge()
合并数组
array_shift()
将数组开头的单元移出数组
array_unshift()
在数组开头插入一个或多个单元
array_pop()
弹出数组最后一个单元(出栈)
array_push()
将一个或多个单元压入数组的末尾(入栈)
以上是关于自定义函数和内部函数考察点的主要内容,如果未能解决你的问题,请参考以下文章