PHP遍历数组并附加到对象

我有很多这样的对象;

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)

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...