class A {
public $a;
public $b;
function f1 () {
// Code
}
}
$obj = new A();
$arr = array ("a" => 1, "b" => 2);
foreach ($arr as $name => $value) {
$obj->$name = $value;
}
return $obj;
我无法理解foreach
部分。我们如何才能将数组作为对象传递并将数据作为数组获取?
答案 0 :(得分:2)
foreach循环的说明:
要将数组传递给对象,请使用魔术设置方法:
class A {
public $a;
public $b;
public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
return $this;
}
}
$obj = new A();
$arr = array ("a" => 1, "b" => 2);
foreach ($arr as $name => $value) {
$obj->__set($name, $value);
}
所有对象都自动作为数组,因此要以数组形式取回它,可以直接循环对象:
foreach ($obj as $key => $value) {
print "$key => $value\n";
}
要直接从对象获取完整数组,可以创建另一个方法来为您完成此操作:
public function getAsArray() {
$arr = array();
foreach ($this as $key => $value) {
$arr[$key] = $value;
}
return $arr;
}
答案 1 :(得分:1)
您可以检查以下代码。
d.append('blob',blob);
使用以下代码更新代码,您将获得数组。
class A {
public $a;
public $b;
function f1 () {
// Code
}
}
$obj = new A();
$arr = array ("a" => 1, "b" => 2);
foreach ($arr as $name => $value) {
$obj->$name = $value;
}
return $obj;
// This return obj output is :-
A Object
(
[a] => 1
[b] => 2
)