代码之家  ›  专栏  ›  技术社区  ›  Julian H. Lam

用对象中的元素添加到类的变量

  •  2
  • Julian H. Lam  · 技术社区  · 15 年前
    $class = new Class;
    $foo = json_decode($_POST['array']);
    

    在这个精心设计的例子中,我有一个类,它有自己的函数和变量,诸如此类。

    我还刚刚解码了一个JSON字符串,所以这些值现在在 $foo . 如何将元素移入 $富 转到 $class

    $foo->name 变成 $class->name ?

    如果我知道所有的元素都是什么,那就微不足道了,是的。。。除了为了保持活力,我想把他们都调过来,我不知道他们的名字。

    2 回复  |  直到 15 年前
        1
  •  2
  •   ircmaxell    15 年前

    你可以用 get_object_vars

    $vars = get_object_vars($foo);
    foreach ($vars as $key => $value) {
        $class->$key = $value;
    }
    

    您也可以在类中实现此功能:

    public function bindArray(array $data) {
        foreach ($data as $key => $value) {
            $this->$key = $value;
        }
    }
    

    $obj->bindArray( (array) $foo );
    

    或者添加一个方法:

    public function bindObject($data) {
         $this->bindArray( (array) $data );
    }
    
        2
  •  1
  •   Daniel Vandersluis    15 年前

    向类中添加一个函数以从对象加载值,然后使用 foreach

    class Class
    {
      function load_values($arr)
      {
        foreach ($arr as $key => $value)
        { 
          $this->$key = $value;
        }
      }
    }
    
    $class = new Class;
    $foo = json_decode($_POST['array']);
    $class->load_values((array)$foo);