如何循环php对象并替换每个属性(变量)中的字符串

如何循环php对象并替换每个属性(变量)中的字符串,php,Php,我需要从php对象的每个属性中删除这些“&”字符 我尝试了下面的代码,但它不起作用…我遗漏了什么 谢谢,伙计们 foreach($query_item as $key => $value) { $key = str_replace(' & ',' & ',$value); } 您应该通过引用引用$value,并对其进行适当修改: foreach($query_item as $key => &$value) { $value = st

我需要从php对象的每个属性中删除这些“&”字符

我尝试了下面的代码,但它不起作用…我遗漏了什么

谢谢,伙计们

foreach($query_item as $key => $value)
{
    $key = str_replace(' & ',' & ',$value);
}

您应该通过引用引用$value,并对其进行适当修改:

foreach($query_item as $key => &$value)
{
    $value = str_replace(' & ',' & ',$value);
}
另一种方法是使用$key引用对象中的项:

foreach($query_item as $key => $value)
{
    $query_item->$key = str_replace(' & ',' & ',$value);
}

我还要指出,在我们讨论用&;替换&;的问题时

出于好奇,您的第一个建议与mjr的原始建议的唯一区别在于,mjr在修改$key的同时,您在修改$value。这是错误吗?通过引用修改是明智的。但是第二个例子不是$query\u item数组吗$查询项目[$key]=?不是。他说:“我需要从php对象的每个属性中删除“&”字符。”对象不是数组,因此需要使用->$key。然而,第一种方法效果最好。只需删除空格,它们是不必要的,如果有人使用类似于
this&that
$query\u的东西,它们可能会弄糟。您的第二种方法对我有用,谢谢!我应该更清楚地说,我确实想在符号周围加上空格,但是谢谢你注意我如果这个foreach在$query\u项之外(我想你不用$this),那么这些属性是公共的还是可以访问的?
foreach($query_item as $key => &$value)
{
    $query_item[$key] = str_replace(' & ',' & ',$value);
}