php的可变变量

 

//php可变变量
$arr = ['first'=>'value1','second'=>'value2','third'=>'value3'];
foreach ($arr as $key=>$value){
    $$key = $value;
}
print_r($arr);//打印结果:['first'=>'value1','second'=>'value2','third'=>'value3'];//原数组不变
print_r($first);//打印结果:value1;
print_r($second);//打印结果:value2;
print_r($third);//打印结果:value3;

通过foreach循环后,设置了三个变量,分别是:$first,$second,$third

 

//实例说明,例如工作中曾经遇到的接口请求页(公共包含文件publc.php)代码大概如下:

//该函数作用:1、检测该传递的参数是否传递了,2、对传递过来的参数进行赋值操作
function checkParam($param,$res=[]){
    foreach (@$res as $k => $v) {
        $$k = @$v;
    }
    foreach ($param as $k => $v) {
        if (!isset($$v)) {
            return "-1_{$v}";
        }
    }
    return true;
}


//接收post提交过来的变量(注意:这里没有用$_POST来接收)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $postText = trim(file_get_contents('php://input'));
}

$res = json_decode($postText, true);

//对所接收的参数进行处理(将每一个传递过的参数进行声明一个对应的同名的变量:如,传递过来的有参数有page,language,cate三个参数的话,经过下面的操作后,将声明三个变量($res还是原来的$res,这个数组是不变的,只不过多了三个变量):$page,$language,$cate)
foreach (@$res as $k => $v) {
    //用‘php://input’这种方式接收到传递过来的参数后,对传递过来的参数进行赋值操作(如Rank.php中的$page,$cate这种,提前没有声明,而且是直接使用的原因是这里已经隐式的声明过了。初看Rank.php代码时遇到的疑惑这里被解释了。。。)
    $$k = @$v;
}

 

//下面是Rank.php文件,这里直接使用了经过上面隐式声明的几个变量

//$page和$cate是经过上面操作后隐式声明的
if(empty($page)){
    $page = 1;
}
if(!in_array($cate,['sell','hot','new'])){
    $cate = 'sell';
}

 

//同样,另外一个接口文件:detail.php页面也用到了 public.php文件中的公共接收参数部分,该文件代码如下:

include_once 'public.php';

$flag = checkParam(['video_id','token'],$res);
if ($flag !== true) {
    $response = array('error'=>'-1','msg'=>'缺少必要参数');
    echo json_encode($response);die;
}
//分析:调用了checkParam()方法,先进行第二个参数$res的检测工作:跳到public.php文件中的参数接收部分,在执行public.php中的checkParam()函数,进入该函数后,执行第一步操作:对接收到的所有是参数进行赋值操作(给接收到的参数赋一个同名的变量,该变量也即是需要api接口需要传递的参数),进入到第二步,检查必填参数是不是都填了(原理:看看必填擦名称是不是经过第一步操作后都被赋值了,如果被赋值了,说明传递了该参数过来,否则就没有传递对应的参数进来(感觉这一步判断写的很妙!!!))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值