我有一个对象$obj
为
$obj->{' Property1'} = " value1";
$obj->{'Property2 '} = "value2 ";
我希望将此对象$obj
作为
$obj->{'Property1'} = "value1";
$obj->{'Property2'} = "value2";
我可以使用
修剪所有值foreach($obj as $prop => &$val)
{
$val = trim($val);
}
但执行此操作(如下)导致错误
foreach($obj as &$prop => &$val)
{
$prop = trim($prop);
$val = trim($val);
}
请告诉解决方案。 提前谢谢。
答案 0 :(得分:1)
您无法引用密钥。
您需要做的是取消设置,并设置如下修剪版本:
<?php
$obj = new stdClass;
$obj->{' Property1'} = " value1";
foreach($obj as $prop => $val)
{
unset($obj->{$prop});
$obj->{trim($prop)} = trim($val);
}
var_dump($obj);
答案 1 :(得分:1)
对Daan的回答有点评论。在他的情况下,如果$ obj有多个属性,脚本将陷入无限循环。所以工作代码看起来像这样。
<?php
$obj = new stdClass;
$obj->{' Property1'} = " value1";
$obj->{'Property2 '} = "value2 ";
$newObj = new stdClass;
foreach($obj as $prop => $val)
{
$newObj->{trim($prop)} = trim($val);
}
$obj = $newObj;
unset($newObj);
var_dump($obj);
答案 2 :(得分:0)
因为您正在尝试修剪对象的属性。你不能这样做。
这适用于数组,但不适用于对象。如果需要更改对象的属性,则需要更改类的属性。