PHP7中,如下的代码,对象成员用怎么用变量表示,如下的代码php5.4中执行正常。在php7.0.2中,后两句输出不正确
<?php $ref = array('val1','val2','val3');
$o = new stdClass();
$b = new stdClass();
$o->val1 = 1;
$o->val2 = 2;
$o->val3 = 3;
$b->val1 = 4;
$b->val2 = 5;
$b->val3 = 6;
echo $o->val1.'-'.$o->val2.'-'.$o->val3.'<br>';
echo $b->val1.'-'.$b->val2.'-'.$b->val3.'<br>';
echo $o->$ref[0].'-'.$o->$ref[1].'-'.$o->$ref[2].'<br>';
echo $b->$ref[0].'-'.$b->$ref[1].'-'.$b->$ref[2].'<br>';
?>
<?php $ref = array('val1','val2','val3');
$o = new stdClass();
$b = new stdClass();
$o->val1 = 1;
$o->val2 = 2;
$o->val3 = 3;
$b->val1 = 4;
$b->val2 = 5;
$b->val3 = 6;
echo $o->val1.'-'.$o->val2.'-'.$o->val3.'<br>';
echo $b->val1.'-'.$b->val2.'-'.$b->val3.'<br>';
echo $o->$ref[0].'-'.$o->$ref[1].'-'.$o->$ref[2].'<br>';
echo $b->$ref[0].'-'.$b->$ref[1].'-'.$b->$ref[2].'<br>';
?>
PHP7要这么写 $o->{$ref[0]}
被调整为 ($foo->$bar)['baz']
见 http://php.net/manual/zh/migration70.incompatible.php (不向后兼容的变更)