如何在PHP中修剪对象属性?

时间:2016-01-13 11:02:06

标签: php oop object

我有一个对象$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);
}

请告诉解决方案。 提前谢谢。

3 个答案:

答案 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)

因为您正在尝试修剪对象的属性。你不能这样做。

这适用于数组,但不适用于对象。如果需要更改对象的属性,则需要更改类的属性。