我的问题,简化为:
class A {
public $a;
public $b;
function f1 () {
// Code
}
}
$obj = new A();
$arr = array ("a" => 1, "b" => 2);
如何将$ arr的内容放入$ obj? (显然没有$ obj-> a = $ arr [“a”],假设有数千个值)
谢谢。
答案 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()方法。