博客列表 >细解php函数

细解php函数

后网络时代
后网络时代原创
2021年01月30日 10:30:33619浏览
  1. 实例演示函数作用域与闭包,回调的使用场景与参数调用;
    答:
    ```
    <?php
    //作用:
    //全局变量:
    $usermail=”1234890@qq.com”;
    $time=mktime(0,0,0,1,1,2021);
    function XL(){
    //本地作用域
    if(!isset($usermail)){

    1. echo "函数内部的变量是私有的,哪怕与外部变量同名,也不会影响到外部变量,除非使用了 global 声明";

    }

}
XL();
echo “<hr>“;

function XXL(){
//函数内部使用全局变量;
//方法一:
global $usermail;
printf(“函数内部使用外部变量:”,$usermail);
echo “<pre></pre>“;
//方法二:$GLOBALS超全局变量
echo ‘通过$GLOBALS访问全局变量:’,$GLOBALS[‘time’];
}
XXL();
echo “<hr>“;

// 闭包<=> 匿名函数
// 闭包: 可以访问函数外部的自由变量/父作用域中的变量

$str=”外部变量”;
$replace=”hello word! 开讲啦!~,拨打热线:88208191,43457891”;
echo preg_replace_callback(“/[0-9]{8}/“,function ($bobo){
return ‘029-‘.$bobo[0];
},$replace);
echo “<hr>“;
//闭包函数也可以作为变量的值来使用
$getN=function () use($str){
echo “匿名函数通过变量名来使用=>”.$str;
};

$getN();
echo “<br>“;
//引用在闭包中的使用:

$index=”张三”;
echo “当前外部变量的值:”.$index;
echo “<br>“;
$getNN=function ($bot) use(&$index){
$index=$bot;
};
$getNN(“世上只有妈妈好!”);
echo “通过匿名调用后:”;
echo “<br>“;
echo “当前外部变量通过匿名改变后的值:”.$index;
echo “<br>“;
// use禁止使用以下三种参数:超全局,$this,当前函数参数重名
// 闭包:父作用域中的变量

function parentscope($name){

return function ($people) use($name){

echo $people.”开着他爸爸的:”.$name;

};

}
$lastN=parentscope(“大奔车”);
$lastN(“明明”);

  1. 效果:
  2. ![](https://img.php.cn/upload/image/750/560/590/1611973302702829.jpg)
  3. 2. 实例演示函数的多值返回类型方式,重点是json
  4. 答:

<?php
/*

  • title:函数返回值
  • resume:函数返回值只有一个,返回多个时候,要使用复合类型
  • author:owen
  • date:2012.01.29
    */

function valueI():Array
{
return [‘春运开始’,’节前15天’,’节后25天’];
}
echo “返回数组:”;
print_r(valueI());
echo “<hr>“;
echo “返回对象的内容:”;
echo “<br>“;
function valueII():Object
{
//匿名函数
return new class {
private $title;
private $sendtime;
private $resume;
private $content;
public function construct()
{
$this->title=”外交部霸气回应台独”;
$this->sendtime=date(“Y年m月d日”);
$this->resume=”对面台独分子,我外交官霸气回应了”;
$this->content=”世界上只有一个中国,这是国际社的共识,台独没有出路,台独意味着战争”;
}
function
toString(){
return implode(“<br>“,[$this->title,$this->sendtime,$this->resume,$this->content]);
}
};
}
echo valueII();
echo “<hr>“;
//序列化输出:
//serialize ( mixed $value ) : string,能处理除resource之外的任何类型 serialize — 产生一个可存储的值的表示
//使用场合:当数据不方便存储或传输的时候,使用它可以方便数据存储或传输
//unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。

function valueIII():string{
return serialize([‘key1’=>’序列化数据测试’,’key2’=>’我要序列化’,123,’123’]);
}

echo valueIII();
//存储:
file_put_contents(‘1.txt’,valueIII().’\r\n’,FILE_APPEND);

echo “<br>“;

echo “反序列化:”;
var_dump(unserialize( valueIII()));
echo “<hr>“;

//返回json(通用数据格式)
//json_encode ( mixed $value , int $options = 0 , int $depth = 512 ) : string|false:所有字符串数据的编码必须是 UTF-8,除了 资源(resource) 类型之外,可以为任何数据类型。

function valueX(){

return json_encode([‘httptstatus’=>301,’info’=>’301重定向’]);

}

valueX();
echo “<br>“;

function valueXI(){
return valuex();
}
echo valueXI();

echo “<br>“;

function valueXII(){
//解析成json对象
return json_encode([‘httptstatus’=>301,’info’=>’301重定向’],JSON_UNESCAPED_UNICODE);
}
echo valueXII();
//
// json转化成数组 设置 json_decode():mixed传入第二个参数 : true
echo “<pre></pre>“;

function valueXX(bool $flag)
{
if($flag)
return json_decode(valueXII(),$flag);
else
return json_decode(valueXII(),$flag);
}
echo “json返回数组:”;
print_r(valueXX(true));
echo “<pre></pre>“;
echo “json返回对象:”;
var_dump( valueXX(false));
//引用在闭包中的使用:
```
效果:

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议