记录一个关于php数组和对象的问题(已解决)
在通过遍历对象名数组,来遍历取得对象的过程中,遇到如下问题。
示例数组:
$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']}
即可解决问题。