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.  }  
posted @ 2017-08-22 10:49  vspiders  阅读(410)  评论(0编辑  收藏  举报