我的問題,簡化爲:從數組傳遞值到對象? - PHP
class A {
public $a;
public $b;
function f1() {
// Code
}
}
$obj = new A();
$arr = array ("a" => 1, "b" => 2);
我怎麼可以把$改編內容爲$ OBJ? (顯然沒有$ obj-> a = $ arr [「a」],假設有數千個值)
謝謝。
我的問題,簡化爲:從數組傳遞值到對象? - PHP
class A {
public $a;
public $b;
function f1() {
// Code
}
}
$obj = new A();
$arr = array ("a" => 1, "b" => 2);
我怎麼可以把$改編內容爲$ OBJ? (顯然沒有$ obj-> a = $ arr [「a」],假設有數千個值)
謝謝。
foreach循環和可變的變量:
foreach ($arr as $name => $value) {
$obj->$name = $value;
}
你可能不應該有成千上萬的變量在你的類,但是。
您還可以使用get_class_vars()
功能一樣 -
<?php
class A {
public $a;
public $b;
function f1() {
// Code
}
}
$obj = new A();
$arr = array ("a" => 1, "b" => 2);
$vars = get_class_vars("A");
foreach($vars as $var=>$value)
$obj->$var = $arr[$var];
print_r($obj);
?>
謝謝你的回答! – johnjohn 2010-07-23 01:02:38
同一個AS(丟棄保護&私有成員):
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()方法。
非常感謝。 :) – johnjohn 2010-07-23 00:42:07