首页 > 解决方案 > php字符串到对象变量 - 替换对象的名称

问题描述

目标替换对象名称的一部分。使用下面的代码获取错误。猜测 str_replace 需要采用另一种格式?

foreach($data as $i => $item) {
   if(strpos($i, 'SIEcat134') !== false){
       $data-> str_replace("SIEcat134","newname",$i) = $data->$i; 
       unset($data->$i);
    } 

}

对象示例(包含更多行)

stdClass Object
(
    [SIEcat134analys] => test
    [SIEcat134avst1] => test2
    [SIEcat134avstbelcy1] => 469 915
    [SIEcat134avstref1] => 19.1
    [SIEcat135analys] => test
    [SIEcat135avst1] => test2
    [SIEcat135avstbelcy1] => 469 915
    [SIEcat135avstref1] => 19.1
 etc
etc
}

标签: phpobject

解决方案


如果要将表达式用作动态属性名称,则必须将其包装在{}.

$data->{str_replace("SIEcat134","newname",$i)} = $data->$i; 

当表达式只是一个简单的变量时,您只能省略大括号,如$data->$i.


推荐阅读