php 可变变量

论坛 期权论坛 脚本     
匿名技术用户   2020-12-30 08:15   39   0

什么是可变变量?

PHP提供了一种其他类型的变量——可变变量。可变变量允许我们动态地改变一个变量的名称。
可以看到,在这方面,PHP具有非常大的自由度——所有的语言都允许改变变量的值,但是并没有太多的语言允许改变变量的类型,至于支持改变变量的名称的语言就更少了。

这个特性的工作原理是用一个变量的值作为另一个变量的名称。例如:
$varname = 'tireqty';
于是,我们就可以用
$$varname = 5;
这个代码等价于:
$tireqty = 5;

在实际使用中,我们可以不用单独列出并使用每一个表单变量,我们可以使用一个循环语句和一个变量来自动处理它们。结合“for循环”,举例如下:
orderform.html的主要内容


 
  1. <pre name="code" class="html"><form action="test.php" method="post">

  2. <table border="0">

  3. <tr bgcolor="#cccccc">

  4. <td width="150">Item</td>

  5. <td width="15">Quantity</td>

  6. </tr>

  7. <tr>

  8. <td>Tires</td>

  9. <td align="center"><input type="text" name="tireqty" size="3" maxlength="3" /></td>

  10. </tr>

  11. <tr>

  12. <td>Oil</td>

  13. <td align="center"><input type="text" name="oilqty" size="3" maxlength="3" /></td>

  14. </tr>

  15. <tr>

  16. <td>Spark Plugs</td>

  17. <td align="center"><input type="text" name="sparkqty" size="3" maxlength="3" /></td>

  18. </tr>

  19. <tr>

  20. <td colspan="2" align="center"><input type="submit" value="Submit Order" /></td>

  21. </tr>

  22. </table>

  23. </form>


 

表单处理文件test.php
传统的中规中矩的写法


 
  1. <?php

  2. $oilqty = $_POST['oilqty'];

  3. $tireqty = $_POST['tireqty'];

  4. $sparkqty = $_POST['sparkqty'];

  5. echo "<p>Your order is as follows:</p>";

  6. echo "<br />\$oilqty=".$oilqty;

  7. echo "<br />\$tireqty=".$tireqty;

  8. echo "<br />\$sparkqty=".$sparkqty;

  9. ?>



如果orderform.html里有很多表单变量,可以想像上面的赋值语句将会很长,而我们采用可变变量就可以优化为如下非常简洁的代码:


 
  1. <?php

  2. foreach ($_POST as $key => $value) {

  3. $$key = $value;

  4. }

  5. echo "<p>Your order is as follows:</p>";

  6. echo "<br />\$oilqty=".$oilqty;

  7. echo "<br />\$tireqty=".$tireqty;

  8. echo "<br />\$sparkqty=".$sparkqty;

  9. ?>

什么是PHP可变函数?

PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

可变函数不能用于例如 echoprintunset()isset()empty()includerequire 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数

php可变函数应用实例:

for example:

我们在前端通过GET传一个name为myfunc1的值(www.admin122.com/?name=myfunc1),这个值是你要调用的函数名


 
  1. $f=$_GET['name'];

  2. $f();

  3. function myfunc1(){

  4. }


再来个例子,这次换成class和function一起
有class A和class B以及class C,他们都有自己的函数
还是前端传值,这次是两个一个class,一个function
同样的


 
  1. $class=$_GET['class'];

  2. $func=$_GET['func'];

  3. $obj=new $class();

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP