如何在php中动态地向现有对象添加新属性?

时间:2016-01-14 13:33:45

标签: php loops oop

我是php新手,我正在尝试向我的对象添加一个新属性 onhold

$ designation是来自数据库的对象数组。

 $data = array(
        "page" => $this->page(),
        "requisitions" => \aljaber\requisition\requisition::find($this->registry, array()),
    );

    $designation = $data["requisitions"];


    foreach ($designation as $key => &$value) {
        $result = json_decode($value["Designation"], true);
        $hold = 0;
        foreach ($result as $v)
        {
            $hold = $hold + $v["onhold"];
        }
        $value[ 'onhold'] = $hold;
    }
    echo self::load_view("list", $data);

任何帮助表示感谢。

$value

1 个答案:

答案 0 :(得分:0)

您的变量$value不是对象,是一个数组。这可以在您附加的屏幕截图中看到(如果您添加代码而不是图像会更好,但没关系)。

要解决此问题,您有两种选择:使用(array)$value更改(object)$value或向数组添加密钥,然后转换为对象:

 $value['onhold'] = $hold;
 var_dump($value); // Array(1) { "onhold"=>"value" }

 $objValue = (object)$value; //convert an array to an object
 var_dump($objValue); // Object(1) { "onhold" => "value" }
相关问题