我有这个对象:
foreach(range(1,$oc->num_users) as $num) {
$user = 'user' . $num;
$$user = mysql_fetch_object(mysql_query("SELECT user".$num.", user".$num."_ready, FROM oc_db WHERE leader='".$_SESSION['username']."' "));
这给出了名为user1..X
的对象稍后我有一个像这样的simular函数,我使用代表用户名的$$user->$user
连接到db以获取其他信息。
$$user = mysql_fetch_object(mysql_query("SELECT x, y, z FROM user_db WHERE username='".$$user->$user."' "));
这也使得对象名为user1..X,但是我想要将这些值附加到我在第一个函数中创建的对象,而不是替换先前创建的对象。 $$user
是对象的名称。我想在最后一个函数中做$$user .= fetch_object
之类的事情,但当然不是那么简单。
答案 0 :(得分:1)
为了将一个对象附加到另一个对象,您只需要遍历第一个对象,然后将找到的每个属性分配给第二个对象:
$tmp = mysql_fetch_object(mysql_query("SELECT x, y, z FROM user_db WHERE username='".$$user->$user."' "));
foreach ($tmp as $key => $value) {
$$user->$key = $value;
}
答案 1 :(得分:0)
作为一些旁白,如果您尝试访问对象的user
属性,则应使用$$user->user
,因为$$user->$user
将尝试访问已编号的属性(例如,对象$user12
,您正在尝试访问$user12->user12
)。我也会考虑使用数组,就像fredley建议的那样(即使用$user[$num]
代替$user = 'user'.$num
)。
要接近原始问题,您可以尝试向.=
类添加方法,例如user
,而不是使用append
并置赋值运算符,然后使用它来追加将获取的对象发送到当前对象,如$user->append( fetch_object(...));
。在append
方法中,您可以定义自己的规则,以了解如何将获取的对象添加到当前用户对象。