将对象追加到php中的另一个对象

时间:2010-09-21 10:35:17

标签: php variables object append

我有这个对象:

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之类的事情,但当然不是那么简单。

2 个答案:

答案 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方法中,您可以定义自己的规则,以了解如何将获取的对象添加到当前用户对象。