php 自定义函数及内部函数考察点
程序员文章站
2023-12-21 22:00:46
...
一、变量作用域
也称作为变量的范围,变量的范围即它定义的上下文背景(也是它的生效范围),
大部分的PHP变量只有一个单独范围,这个单独的范围跨度同样包含include 和 require 引入的文件
global 关键字:函数内部可以使用global关键字,访问全局变量
也可以通过$GLOBALS 及 其他超全局数组
比如:
$str = 'xxxx';
function test(){
//方法一:
global $str;
echo $str;
//方法二
//echo $GLOBALS['str']
}
二、静态变量
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时其值并不会消失
static关键字
仅初始化一次
初始化时需要赋值
每次执行函数该值会保留
static修饰的变量是局部的,仅在函数内部有效
可以记录函数的调用次数,从而可以在某些条件下终止递归
2.1、全局变量、静态变量
2.2、函数传递
2.3、函数的引用返回
三、外部文件的导入
如果给出路径名按照路径来找,否则从include_path中查找
如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找
当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围
假如以上都没有找到,那么如下报错或者警告
require 及 require_once:失败时会产生一个致命级别错误,并停止程序运行。
include 及 include_once :失败时只产生一个警告级别错误,程序继续运行。
两者唯一区别在于当所包含的文件代码已经存在时候,不在包含
四、系统内置函数
4.1、时间日期函数
date() //格式化时间戳
strtotime() //将英文文本日期时间解析为 Unix 时间戳
mktime() //整数 Unix 时间戳
time() //获取当前时间时间戳
microtime() //获取毫秒
date_default_timezone_set() //设置默认时区
4.2、ip处理函数
long2ip : 将长整型转化为字符串形式带点的互联网标准格式地址(IPV4)
ip2long : 将 IPV4 的字符串互联网协议转换成长整型数字
4.3、打印函数
echo()
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
print():简单类型变量的值(如int,string)
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。
print_r():可以打印出复杂类型变量的值(如数组,对象)
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
var_dump()
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
var_export():输出或返回一个变量的字符串表示
此函数返回关于传递给该函数的变量的结构信息
您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。是其返回的表示是合法的 PHP 代码。
4.4、序列化serialize和反序列化unserialize
4.5、json_encode 和 json_decode
4.6、字符串函数
php 字符串使用总结
4.7、数组函数
php 数组操作
也称作为变量的范围,变量的范围即它定义的上下文背景(也是它的生效范围),
大部分的PHP变量只有一个单独范围,这个单独的范围跨度同样包含include 和 require 引入的文件
global 关键字:函数内部可以使用global关键字,访问全局变量
也可以通过$GLOBALS 及 其他超全局数组
比如:
$str = 'xxxx';
function test(){
//方法一:
global $str;
echo $str;
//方法二
//echo $GLOBALS['str']
}
二、静态变量
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时其值并不会消失
static关键字
仅初始化一次
初始化时需要赋值
每次执行函数该值会保留
static修饰的变量是局部的,仅在函数内部有效
可以记录函数的调用次数,从而可以在某些条件下终止递归
2.1、全局变量、静态变量
<?php
/**
* 写出如下程序的输出结果:
* <?php
*
* $count = 5;
* function get_count()
* {
* static $count;
* return $count++;
* }
* echo $count;
* ++$count;
*
* echo get_count();
* echo get_count();
*
* ?>
*
*/
$count = 5;
function get_count()
{
static $count;
return $count++;
}
echo $count;//5
++$count;
//这里还涉及到运算符:递减NULL值没有效果,但是递增NULL值为1
echo get_count();//null,第一次定义的static $count,内容为null,现返回内容null,再null++,结果为1
echo get_count();//1,static $count = 1,现返回1,再递增
2.2、函数传递
<?php
$var1 = 5;
$var2 = 10;
function foo(&$my_var)
{
global $var1;
$var1 += 2;
$var2 = 4;
$my_var += 3;
return $var2;
}
$my_var = 5;
echo foo($my_var). "\n";//4
echo $my_var. "\n";//8
echo $var1;//7
echo $var2;//10
$bar = 'foo';
$my_var = 10;
echo $bar($my_var). "\n";//4
2.3、函数的引用返回
从函数返回一个引用,必须在函数声明和指派返回值给一个变量都是用引用运算符&
<?php
function &myFunc()
{
static $b = 10;
return $b;
}
echo myFunc();//10
$a = &myFunc();//此步a直接引用到b的地址
$a = 100;//修改a的值,相当于修改b的值
echo myFunc();//100 ,因为b是一个静态变量,该值会保留
三、外部文件的导入
如果给出路径名按照路径来找,否则从include_path中查找
如果include_path中也没有,则从调用脚本文件所在的目录和当前工作目录下寻找
当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围
假如以上都没有找到,那么如下报错或者警告
require 及 require_once:失败时会产生一个致命级别错误,并停止程序运行。
include 及 include_once :失败时只产生一个警告级别错误,程序继续运行。
两者唯一区别在于当所包含的文件代码已经存在时候,不在包含
四、系统内置函数
4.1、时间日期函数
date() //格式化时间戳
strtotime() //将英文文本日期时间解析为 Unix 时间戳
mktime() //整数 Unix 时间戳
time() //获取当前时间时间戳
microtime() //获取毫秒
date_default_timezone_set() //设置默认时区
4.2、ip处理函数
long2ip : 将长整型转化为字符串形式带点的互联网标准格式地址(IPV4)
ip2long : 将 IPV4 的字符串互联网协议转换成长整型数字
4.3、打印函数
echo()
可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
print():简单类型变量的值(如int,string)
函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。
print_r():可以打印出复杂类型变量的值(如数组,对象)
可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
var_dump()
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
var_export():输出或返回一个变量的字符串表示
此函数返回关于传递给该函数的变量的结构信息
您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。是其返回的表示是合法的 PHP 代码。
var_dump和print_r的区别:
var_dump返回表达式的类型与值而print_r仅返回结果,相比调试代码使用var_dump更便于阅读。
var_dump和var_export的区别:
var_export() 函数返回关于传递给该函数的变量的结构信息,是合法的 PHP 代码,可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示
var_dump() 打印变量的相关信息
printf():根据格式进行输出
sprintf():根据格式转换字符串,并返回
4.4、序列化serialize和反序列化unserialize
<?php
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//序列化数组
$s = serialize($a);
echo $s;
//输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";}
echo '<br /><br />';
//反序列化
$o = unserialize($s);
print_r($o);
//输出结果 Array ( [a] => Apple [b] => banana [c] => Coconut )
4.5、json_encode 和 json_decode
<?php
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//序列化数组
$s = json_encode($a);
echo $s;
//输出结果:{"a":"Apple","b":"banana","c":"Coconut"}
echo '<br /><br />';
//反序列化
$o = json_decode($s);
在上面的例子中,json_encode输出长度比上个例子中serialize输出长度显然要短
4.6、字符串函数
php 字符串使用总结
4.7、数组函数
php 数组操作
推荐阅读
-
php 自定义函数及内部函数考察点
-
小议Python中自定义函数的可变参数的使用及注意点
-
小议Python中自定义函数的可变参数的使用及注意点
-
php基础知识考察点:自定义函数及内部函数考察点
-
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
-
php自定义函数之递归删除文件及目录
-
php基础知识考察点:自定义函数及内部函数考察点
-
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
-
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
-
php自定义函数之递归删除文件及目录_PHP教程