【发布时间】:2014-12-19 02:53:56
【问题描述】:
我有这门课,
class example {
public $a;
public $b;
public $c;
....
}
我有一个包含与示例类中相同数量的公共变量的数组(在本例中为 3):
$arr[0] = 'Red';
$arr[1] = 'Green';
$arr[2] = 'Blue';
我想将这个数组的每个值一个一个地分配给类的公共属性(比如$a 得到Red,$b 得到Green 等等)。如何使用循环将数组中的这些值分配给类的公共属性?
我正在写类似下面的东西,但它不起作用:
$class = new example();
$i = 0;
foreach ($class as $key => $value) {
$class->$$key = $arr[$i];
$i++;
}
编辑:
只是为了解释为什么我不能在 example 类中使用任何 setter/getter 方法 - 实际上 example 类是通过反序列化数据库对象创建的。我对这门课没有任何控制权。我正在开发一个控制器类,它接收这个example 类和一个数组。我需要想办法将这个数组中的值分配给example 类的公共属性。
【问题讨论】:
-
变量名不能以数字开头。您不能拥有
$class->0或$class->1成员。有一些骇人听闻的方法来实现它,但我们会确定你做不到。但是,您的整个方法是错误的。为什么你的班级没有一个数组而不是一些公共成员? -
我同意@NB。 - 方法是错误的。它本质上是一种自省的黑客行为。一个更好的问题是为什么你需要在一个循环中做它,它真的需要吗。对我来说,这似乎是构造函数可以轻松处理的事情,即便如此,我也不完全确定它需要以这种方式完成。
-
@N.B.
$key不是数字,它是example类的公共成员属性的名称。 -
伙计们-感谢您告诉我的方法是错误的。现在请回答问题
-
对不起,我误读了 foreach,我以为你在迭代数组 - 抱歉。
标签: php arrays class loops variable-assignment