我有很多这样的对象;
Array
(
[0] => stdClass Object
(
[Job] => stdClass Object
(
[ID] => 123
[Name] => Foo
)
)
[1] => stdClass Object
(
[Job] => stdClass Object
(
[ID] => 456
[Name] => BAR
)
)
)
我需要遍历数组,并将一些其他信息附加到“状态”之类的对象中,但是我遇到了一些问题.
foreach($arrJobs as $key => $val) {
$arrJobs[$key]->Job->Status = new StdClass;
$arrJobs[$key]->Job->Status = $myStatus;
}
这似乎可行,但是我收到以下警告;
Warning: Creating default object from empty value in…
解决方法:
根据我对您的理解,您只需要将属性附加到现有对象即可.不要在循环中创建新对象
你只需要这个
foreach ($arrJobs as $obj)
{
$obj->job->status = $myStatus;
}
查看完整代码:
<?PHP
$obj1 = new \stdClass();
$obj1->job = new \stdClass();
$obj1->job->id = 123;
$obj1->job->name = "foo";
$obj2 = new \stdClass();
$obj2->job = new \stdClass();
$obj2->job->id = 456;
$obj2->job->name = "bar";
$array = [$obj1,$obj2];
var_dump($array);
foreach ($array as $obj)
{
$obj->job->status = "the status";
//add any properties as you like dynamicly here
}
echo "<br>\nafter<br>\n";
var_dump($array);
exit;
现在$obj1和$obj2具有新的属性’status’,请参见该演示:(https://eval.in/833410)