代码之家  ›  专栏  ›  技术社区  ›  ganjan

在php中将对象附加到另一个对象

  •  0
  • ganjan  · 技术社区  · 14 年前

    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 表示连接到数据库以获取附加信息的用户名。

       $$user = mysql_fetch_object(mysql_query("SELECT x, y, z FROM user_db WHERE username='".$$user->$user."' "));
    

    这也使得对象名为user1..X,但是我不想替换前面创建的对象,而是想将这个值附加到我在第一个函数中创建的对象。 $$user 是对象的名称。我想做一些像 $$user .= fetch_object

    2 回复  |  直到 14 年前
        1
  •  1
  •   Saul    14 年前

    为了将一个对象附加到另一个对象,只需遍历第一个对象,然后将找到的每个属性分配给第二个:

    $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;
    }
    
        2
  •  0
  •   Aether    14 年前

    如果你想进入 user $$user->user ,作为 $$user->$user 将尝试访问带编号的属性(例如对象 $user12 $user12->user12 ). 我也会考虑使用数组,正如fredley所建议的(即使用 $user[$num] $user = 'user'.$num ).

    来解决你最初的问题,而不是使用 .= 连接赋值运算符,可以尝试将方法添加到 用户 append $user->append( fetch_object(...)); . 在 追加 方法,您可以定义自己的规则,以确定如何将获取的对象添加到当前用户对象。