Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换对象中的项目?_Php_Loops_Foreach - Fatal编程技术网

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");