zoukankan      html  css  js  c++  java
  • php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符

    php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符
    方式一:使用花括号,前缀部分不需要用单引号
    $nums10 = 100;
    $xxx*${bcount.$nums10}['m54']/$nums10

    方式二:使用两个$符,先给key赋值最终的变量名称,后面才当成真正的变量使用。
    $nkey = 'bcount'.$nums10;
    $xxx*$$nkey['m54']/$nums10

    =================
    PHP可以动态地创建一个变量名。如:使用与数据库查询得到的字段名称一致的变量名。
    使用PHP中“可变变量”的语法:在一个其值为你想作为变量名称的变量前面加一个$:

    $animal = 'turtles';
    $turtles = 103;
    print $$animal;

    在PHP中如果在一个变量名称前面放两个美元($)符号,PHP就会废弃右面的变量,而取其值,然后,将该值作为“真正”的变量名称。例如:

    $animal = 'turtles';
    $turtles = 1024;
    print $$animal;

    这段代码会输出1024。因为$animal = ’turtles',$$animal 就是$turtles,而$turtles等于1024。

    如果使用大括号,还能够构造出用于表示变量名的更复杂的表达式:

    $stooges = array('Moe','Larry','Curly');
    $stooge_moe = 'Moses Horwitz';
    $stooge_larry = 'Louis Feinberg';
    $stooge_curly = 'Jerome Horwitz';
    foreach ($stooges as $s) {
      print "$s's real name was ${'stooge_'.strtolower($s)}. ";
    }
    Moe's real name was Moses Horwitz.
    Larry's real name was Louis Feinberg.
    Curly's real name was Jerome Horwitz.

    PHP会求得位于大括号之间的表达式的值,并将这个值作为一个变量名。大括号中的表达式甚至还可以调用函数,比如上面代码中的strtolower()。
    在迭代类似的变量名称时,可变变量也很有用。假如你想要查询一个数据库表,其字段名分别是title_1, title_2等。如果你想要检查一个标题($title)是否与其中一个字段的值匹配,那么最简单的方式就是像下面这样进行循环遍历:

    for ($i = 1; $i <= $n; $i++) {
      $t = "title_$i";
      if ($title == $$t) { /* match */ }
    }

    当然,如果把这些值保存到一个数组中可能会更直观,不过,要是你在维护一段使用了这种技术的老代码(即不能修改),可变变量就很有用了。
    大括号语法在理清有关数组元素的歧义时是必要的。可变变量$$donkeys[12]可能有两种含义。第一种含义是“拿$donkeys数组中第12元素的值作为一个变量名”,要想明确表示这种含义,应该写成:${$donkeys[12]}。第二种含义是“用标量$donkeys的值作为一个数组名称,并找到该数组中的第12元素”,若想明确表示这种含义,应该写成:${$donkeys}[12]。

    HP中动态创建变量名语法并不局限于两个美元符号,可以使用三个甚至更多个。然而,在实践中很少出现有必要使用超过两个间隔层次的情况。

  • 相关阅读:
    C语言实现数据机构链表的基本操作(从键盘输入生成链表、读取数组生成链表)
    MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法
    win10彻底卸载和删除MySql
    Linux/(centos、unix等)的ssh双向免密登录原理和实现
    笔趣阁小说-圣墟-爬虫源代码
    C语言实现顺序表的基本操作(从键盘输入 生成线性表,读txt文件生成线性表和数组生成线性表----三种写法)
    python语言开发环境配置
    Python闭包详解
    结对作业
    Java第九次作业——接口回调
  • 原文地址:https://www.cnblogs.com/zdz8207/p/php-dynamic-variable.html
Copyright © 2011-2022 走看看