Php 替换对象中的项目?
我在一个对象中循环:Php 替换对象中的项目?,php,loops,foreach,Php,Loops,Foreach,我在一个对象中循环: foreach ($data as $asset) { $asset->test = 'test'; } test存在于$data中,并设置为其他值,我希望用“test”替换它 上述方法行不通。我哪里出错了?您应该将引用循环与和一起使用,比如foreach($data as&$asset) 引用的循环将对$data产生影响,否则只有当前的$asset对象发生更改。您可以考虑使用一个已经存在的函数,例如执行您的函数的array\u walk function
foreach ($data as $asset) {
$asset->test = 'test';
}
test存在于$data中,并设置为其他值,我希望用“test”替换它
上述方法行不通。我哪里出错了?您应该将引用循环与
和一起使用,比如foreach($data as&$asset)
引用的循环将对$data
产生影响,否则只有当前的$asset
对象发生更改。您可以考虑使用一个已经存在的函数,例如执行您的函数的array\u walk
function test_exists(&$asset) {
$asset->test = "test";
}
array_walk($data, "test_exists");
如果$data
是一个对象数组,则不需要这样做,因为对象永远不会被复制。尽管这不相关,因为OT希望更改对象的属性测试$data
。简单地$data->test='test'代码>就足够了。否foreach
是必需的。@Yoshi如果test
索引属于$data
,那么您是正确的$data->test='test'代码>。但是如果属于子项
,当然必须循环,尽管我认为OT只是使用循环,因为他/她不知道更多。我使用每个循环
,因为提问者使用$asset->test
,也就是子项
。您知道,未引用的数组不会产生任何影响。我只是向提问者展示了这个技巧:)也许吧,但请阅读以下问题:“test存在于$data中,并且设置为其他内容,我希望用'test'替换它。”循环只是一个错误。只需$data->test='其他内容'代码>。(提供的测试是公开的)
function test_exists(&$asset) {
$asset->test = "test";
}
array_walk($data, "test_exists");