记录一个关于php数组和对象的问题(已解决)

PHP Aug 21, 2016

在通过遍历对象名数组,来遍历取得对象的过程中,遇到如下问题。

示例数组:

$tmpArr = array(
    array('key'=>'name'),
    array('key'=>'sex'),
    array('key'=>'location')
);

示例对象:

$tmpObj->name = 'test name';
$tmpObj->sex = 'M';
$tmpObj->location = 'China';

问题代码:

foreach($tmpArr as $key => $value){
    $finalArr[$key] = $tmpObj->$value['key'];
}
var_dump($finalArr);

这时打印出来的finalArr里的所有值都是null,然而当我们添加一个临时变量,如下:

foreach($tmpArr as $key => $value){
    $tmp = $value['key'];
    $finalArr[$key] = $tmpObj->$tmp;
}
var_dump($finalArr);

这时打印出来的finalArr确是完全正确的。

没搞清楚为什么,所以记录下来。

经知乎用户@灵剑提醒,此问题应该是由于运算符优先级导致的,经过验证,将$tmpObj->$value['key']改为$tmpObj->{$value['key']}即可解决问题。

Tags