【问题标题】:How to trim object properties in PHP?如何在 PHP 中修剪对象属性?
【发布时间】:2016-01-13 11:02:05
【问题描述】:

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

请告诉一个解决方案。 提前致谢。

【问题讨论】:

  • 你有没有尝试拆分键值对code foreach($obj as $prop => $val) { unset($obj->{$prop}); $obj->{trim($prop)} = trim($val); } code
  • @nu1_ww 是的,我做到了。它没有用。

标签: php oop object


【解决方案1】:

您不能引用密钥。

你需要做的是取消它,然后像这样设置修剪后的版本:

<?php
$obj = new stdClass;
$obj->{' Property1'} = " value1";

foreach($obj as $prop => $val)
{
     unset($obj->{$prop});
     $obj->{trim($prop)} = trim($val);
}

var_dump($obj);

【讨论】:

    【解决方案2】:

    对大安的回答稍加评论。在他的情况下,如果 $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);
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-08-22
        • 2019-03-09
        • 2021-08-28
        • 2020-03-09
        • 1970-01-01
        • 2011-08-31
        • 2014-04-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多