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

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

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

  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请求等提交很多参数,如下代码:

  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请求中获取出来,这样写起来非常的麻烦,而且不适合日后的扩展操作,这是我们引用$$魔法变量便可轻松的解决此问题,代码如下:

  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,同样不管我们提交什么请求,他都能进行变量赋值操作,当然常规的写法还有很多种,如下:

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

随机推荐

  1. hexo-next-travis-ci 构建自动化部署博客

    构建效果如上面视频所示,如果浏览器不支持请戳一下链接: 自动化部署构建效果 .只要将编辑的 .md 文件推送到 github 上,博客网站就可以更新这篇文章. 其实差不多半年前也构建过一次,由于安装 ...

  2. 快速入门和查询Python

    评分: 4.5 作者: Ryan Lu 类别:Python 时间: 1. 注释 三种方式: 单行注释以 # 开头 多行注释用三个单引号 ''' 将注释括起来 多行注释用三个双引号 "&quo ...

  3. ZeroMQ,史上最快的消息队列

    一.ZMQ 是什么 阅读了 ZMQ 的 Guide 文档后,我的理解是,这是个类似于 Socket 的一系列接口,他跟 Socket 的区别是:普通的 socket 是端到端的(1:1的关系),而 Z ...

  4. Vue源码之数据驱动(个人向)

    #1.大致流程 # 2.具体流程 数据驱动 New VUE Where:src/core/instance/index.js Do: 1.使用Function实现Vue类 2.调用_init 初始化V ...

  5. C++走向远洋——63(项目二2、两个成员的类模板)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. python基础-基本概念

    python概念介绍 python是一门动态解释型的强类型定义语言,创始人吉多·范罗苏姆(Guido van Rossum) #编译型语言 编译型:一次性将所有程序编译成二进制文件 缺点:开发效率低, ...

  7. node.js-web服务器

    node.js--web服务器 目前最主流的三个Web服务器是Apache.Nginx.IIS. 使用 Node 创建 Web 服务器 以下是演示一个最基本的 HTTP 服务器架构(使用8081端口) ...

  8. 初识 jquery.simulate.js 模拟键盘事件

    用jquery 和 jquery.simulate.js 实现模拟键盘事件,点击上下左右div相当于点击键盘的上下左右键 <!DOCTYPE html> <html> < ...

  9. 【Amaple教程】6. 路由配置

    在 第1节<启动路由> 章节中为了能让单页应用顺利跑起来,我们提前介绍了简单的路由配置方法.我们已了解路由配置的目的是指定不同的url下对应的 模块节点(也叫做模块容器)内应该显示哪个模块 ...

  10. JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器

    5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...