Как обрезать свойства объекта в PHP?

У меня есть объект $obj as

 $obj->{' Property1'} = " value1"; $obj->{'Property2 '} = "value2 "; 

Я хочу получить этот объект $obj as

 $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); } 

Скажите, пожалуйста, решение. Заранее спасибо.

Вы не можете ссылаться на ключ.

Что вам нужно сделать, это отключить его и установить обрезанную версию следующим образом:

 <?php $obj = new stdClass; $obj->{' Property1'} = " value1"; foreach($obj as $prop => $val) { unset($obj->{$prop}); $obj->{trim($prop)} = trim($val); } var_dump($obj); с <?php $obj = new stdClass; $obj->{' Property1'} = " value1"; foreach($obj as $prop => $val) { unset($obj->{$prop}); $obj->{trim($prop)} = trim($val); } var_dump($obj); 

Небольшой комментарий к ответу Даана. В его случае скрипт попадает в бесконечный цикл, если $ 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); с <?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); 

Потому что вы пытаетесь обрезать свойство объекта. Вы не можете этого сделать.

Это будет работать для массива, но не для объекта. Если вам нужно изменить свойства объекта, вам нужно изменить свойства класса.