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
部分。我们如何传递数组作为对象,获取该数据阵列?
你可以请检查下面的代码。
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
)
更新与下面的代码你的代码你会得到阵列。
return (array)$obj;
//Output
Array
(
[a] => 1
[b] => 2
)
您的foreach循环的说明:
要通过阵列对象,使用魔法setter方法:
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;
}