zoukankan      html  css  js  c++  java
  • PHP中$$的应用

    PHP中$表示一个变量的声明,$value='test';表示变量value的值是test。

    而$$则好像是C语言中的指针,它指向一个变量值的一个变量。

    例如:$$value='a';这句话的意思就是首先取$value变量的值,为test,然后再将其值变成一个变量即表示为$test='a';

    [php] view plain copy
    1. <?php  
    2.     $value='test';  
    3.     $test='a';  
    4.     echo $$value;  
    5. ?>  
    6. <?php  
    7.     $value='test';  
    8.     $$value='a';  
    9.     echo $test;  
    10.  ?>  
    两个代码输出的值都是a。

    这里举个很经典的例子作为他的应用:

    我们经常会遇到通过HTTP GET请求和POST请求等提交很多参数,如下代码:

    [php] view plain copy
    1. <?php  
    2. $action=$_GET[action];  
    3. $mid=$_GET[mid];  
    4. $keywords=$_GET[keywords];  
    5. if($action=='list'){  
    6.     echo "list";  
    7.  }  
    8. if($mid=='1'){  
    9.     echo "mid";  
    10.  }  
    11. if($keywords=='search'){  
    12.     echo "keywords";  
    13.  }  
    14.  ?>  

    我们想要从GET请求中获取变量action、mid、keywords的值,那么就需要分别建立三个赋值函数,从GET请求中获取出来,这样写起来非常的麻烦,而且不适合日后的扩展操作,这是我们引用$$魔法变量便可轻松的解决此问题,代码如下:

    [php] view plain copy
    1. foreach ($_GET as $_key=>$_value){  
    2.     $$_key=$_value;  
    3.  }  

    这里就是首先吧$_GET请求变量以数组的形式赋值给$_key:$_value,比如我们提交url为?action=list,那么$_key的值就是action,$_value的值便是list,紧接着我们就使用魔法变量$$_key即变成$action的值为$_value即list,这样就将值list赋值给了变量$action,同样不管我们提交什么请求,他都能进行变量赋值操作,当然常规的写法还有很多种,如下:

    [php] view plain copy
    1. foreach ($_GET as $_key=>$_value){  
    2.     $$_key=$_GET[$_key];  
    3.  }  
  • 相关阅读:
    [SHOI2014]信号增幅仪
    [SDOI2016]征途
    Luogu P3226 [HNOI2012]集合选数
    Comet OJ C1076 [Contest #4]求和
    Luogu P2657 [SCOI2009]windy数
    Luogu P1864 [NOI2009]二叉查找树
    UVA10559 Blocks
    Luogu P1880 [NOI1995]石子合并
    简单DP
    CF1097F Alex and a TV Show
  • 原文地址:https://www.cnblogs.com/vspiders/p/7410520.html
Copyright © 2011-2022 走看看