可变变量

有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。

<?php

$foo = 'bar';
$$foo = 'baz';
var_dump($foo); // string(3) "bar"
var_dump($bar); // string(3) "baz"

要将可变变量用于数组,必须解决一个模棱两可的问题。

<?php

$foo = ['foo', 'bar', 'baz', 'qux'];
$bar = 'bar';
var_dump(${$foo[1]}); // string(3) "bar"

$foo = 'bar';
$bar = ['foo', 'bar', 'baz', 'qux'];
var_dump(${$foo}[1]); // string(3) "bar"

类的属性也可以通过可变属性名来访问。可变属性名将在该调用所处的范围内被解析。

<?php

class Foo
{
    /**
     * Just a test property.
     *
     * @var string
     */
    public string $bar = 'BAR';

    /**
     * Just a test property.
     *
     * @var array
     */
    public array $baz = ['FOO', 'BAR', 'BAZ', 'QUX'];
}

$foo = new Foo();
$bar = 'bar';
$baz = 'baz';
$qux = ['foo', 'bar', 'baz', 'qux'];
var_dump($foo->$bar);      // string(3) "BAR"
var_dump($foo->{$baz}[2]); // string(3) "BAZ"
var_dump($foo->{$qux[1]}); // string(3) "BAR"

results matching ""

    No results matching ""