将值从数组传递给对象? - PHP

时间:2010-07-23 00:36:41

标签: php arrays oop

我的问题,简化为:


class A {
  public $a;
  public $b;

  function f1 () {
     // Code
  }
}

$obj = new A();

$arr = array ("a" => 1, "b" => 2);

如何将$ arr的内容放入$ obj? (显然没有$ obj-> a = $ arr [“a”],假设有数千个值)

谢谢。

3 个答案:

答案 0 :(得分:6)

foreach循环和变量变量:

foreach ($arr as $name => $value) {
  $obj->$name = $value;
}

你的课程中可能不应该有数千个变量。

答案 1 :(得分:2)

您也可以使用{ - 1}}功能,如 -

get_class_vars()

答案 2 :(得分:1)

与(丢弃受保护和私人成员)相同:

foreach ($obj as $property_name => $property_value) {
    if (array_key_exists($property_name, $arr))
        //discarding protected and private member
        $obj->$property_name = $arr[$property_name];
}

或者只在A类上添加迭代方法:

class A {
    public $a;
    public $b;

    function iterate($array) {
        foreach ($this as $property_name => $property_value) {
            if (array_key_exists($property_name, $array))
                $this->$propety_name = $array[$property_name];
        }
    }
    function f1 () {
        // Code
    }
} 

并使用iterate()方法。