首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP中对变量处理的更改

PHP中对变量处理的更改
EN

Stack Overflow用户
提问于 2017-12-09 13:47:15
回答 2查看 43关注 0票数 0

我无法理解变量解析。

我已经通过了这个链接语法,但是这个链接太难理解了。

代码语言:javascript
复制
class Test{

    public $var=array('baz'=>'a');

    function a(){

        return 'amazing_class<br/>';
    }
}

 function a(){

    return 'amazing_out_of_class<br/>';
}


$obj=new Test();

$bar='var';
echo "1. ".$obj->$bar['baz']();  //Output amazing_out_of_class

$bar=array('baz'=>'a');
echo "2. ".$obj->{$bar['baz']}(); //Output amazing_class

现在让我们看一下第一种情况:$obj->$bar['baz']()

($obj->var'baz')() ($obj->$bar)['baz']() >>>>>> a() >>> amazing_out_of_class

现在,我还假设它是$obj->{$bar['baz']}()解析的,与上面的和预期的Notice error : undefined Property a相同。

$obj->{$bar['baz']}() >>> ($obj->a)() >>> ($obj->a) is Notice error : undefined Property a

根据第一种情况,Notice error : undefined Property a是我的假设,但它的输出amazing_class

EN

回答 2

Stack Overflow用户

发布于 2017-12-09 14:01:00

很简单

代码语言:javascript
复制
$bar='var';
echo "1. ".$obj->$bar['baz']();  //Output amazing_out_of_class

例如,$obj->$bar‘’baz‘计算为

代码语言:javascript
复制
$obj->$bar['baz']() -> $obj->$var['baz']() -> {$obj->a} () -> a()

第二个值也被计算为

代码语言:javascript
复制
$obj->{$bar['baz']}() -> $obj->{a}() ( $bar['baz'] as a)

参考资料:http://php.net/manual/en/language.variables.php Php.net/手册/en/language.types.string.php age.typees.string.php.net

请补充,如果有什么遗漏

代码语言:javascript
复制
$bar=array('baz'=>'a');
echo "2. ".$obj->{$bar['baz']}();
票数 1
EN

Stack Overflow用户

发布于 2017-12-09 14:06:40

也许你需要从

代码语言:javascript
复制
$obj->$bar['baz']();

代码语言:javascript
复制
$obj->{$bar}['baz']();

最终代码将为

代码语言:javascript
复制
$bar='var';
echo "1. ".$obj->{$bar}['baz']();  //Output amazing_out_of_class

$bar=array('baz'=>'a');
echo "2. ".$obj->{$bar['baz']}(); //Output amazing_class

现场演示:https://eval.in/915826

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47729216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档