Skip to content
Advertisement

from php 5.4 to php 7 , useing dynamic variables is confused

my php is update from php 5.4 to php 7.0.33 , but php code get an error with Dynamic variables

php 5.4 some code like this…

$attributes=array('boy','girl','none' );
$this->boy = 'eric';
$this->girl = 'lili';
$this->none = 'who';
            
echo $attributes[0];                    //=>php 5 is "boy"  | php 7 is "boy"
print_r( $this->$attributes[0] );       //=>php 5 is "eric" | php 7 is empty
print_r( $this->${attributes}[0] );     //=>php 5 is "eric" | php 7 is empty

when I use in php 7 shome code get epmty, how can I do to resolve this problem

I already watching the refer page Using braces with dynamic variable names in PHP , but still confused

Advertisement

Answer

For dynamic variables like this, you need to wrap the string in curly braces. You almost had it there in your last line. However, remember that it’s not the array $attributes that you’re using to indicate the dynamic variable, it’s the string at $attributes[0].

So this should work:

$this->{$attributes[0]}

Dynamic variables names are powerful, but easy to get confused with. If you have the option, I’d recommend using just an array:

$this->attributes = [
    "boy"  => "eric",
    "girl" => "lili",
    "none" => "who"
];

echo $this->attributes["boy"];
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement