在php中一个自定义变量的值可以做为别一个变量的名或一个函数来使用,我们称之为可变变量或可变函数,比如php代码中出现的带个多个$符号(比如 $$a)的变量就是可变变量!

php 可变变量的用法

可变变量:利用一个普通的变量通过声明来设置另一个变量的变量名, 

示例1:

<?php
$host = 'feiniaomy.com';
$str = 'host';
echo $str;
echo $$str; //这里实际上是指向的变量 $host

输出结果:

host
feiniaomy.com

示例2:

<?php
$a = 'host';
$$a = 'feiniaomy.com';
// $$a 等价于 $host
echo $host;

输出结果:

feiniaomy.com

示例3:

<?php
$a = 'b';
$b = 'c';
$c = 'a';
echo $a; //输出 :b
echo $b; //输出 :c
echo $c; //输出 :a
echo $$a; //输出 :c
echo $$$a; //输出 :a
echo $$$$a; //输出 :b

php 可变函数的使用方法

可变函数与可变变量大同小异,如果在可变变量的后面加入一个"()"符号,那么php就会将这个可变变量当做一个函数来解析处理,也就是说可变函数!

例1:

<?php
function get_host()
{
    echo "feiniaomy.com";
}
$a = 'get_host';
$a(); //这里等价于 get_host() 函数

输入结果:

feiniaomy.com

例2:

<?php
class A
{
    public function echo_a()
    {
        echo "a";
    }
    public function echo_b()
    {
        echo "b";
    }
    public function echo_c()
    {
        echo "c";
    }
}
$arr = ['echo_a', 'echo_b', 'echo_c'];
$a = new A();
foreach ($arr as $v) {
    $a->$v();
}

输出结果:a b c

PS:

php的可变变量与可变函数虽然使用起来非常的灵活,但他的可读性不是很好,在正式的项目中如果不是在非必要的情况下是不建议使用的!