добавить объект к другому объекту в PHP - PullRequest
0 голосов
/ 21 сентября 2010

У меня есть этот объект:

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

позже у меня есть подобная функция, подобная этой, где я использую $$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 ]

1 голос
/ 21 сентября 2010

Чтобы добавить один объект к другому, вам просто нужно пройтись по первому объекту, а затем присвоить каждому найденному свойству второй:

$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;
}
0 голосов
/ 21 сентября 2010

В качестве пары сторон, если вы пытаетесь получить доступ к свойству user объекта, вам следует использовать $$user->user, так как $$user->$user будет пытаться получить доступ к пронумерованному свойству (например, для объекта * 1004).*, вы пытаетесь получить доступ к $user12->user12).Я также хотел бы рассмотреть возможность использования массива, как предложил Фредли (т.е. использовать $user[$num] вместо $user = 'user'.$num).

Чтобы подойти к исходному вопросу, вместо использования оператора конкатенации .=, вы можете попробоватьдобавление метода к вашему классу user, такого как append, затем использование его для добавления извлеченного объекта к вашему текущему объекту, например $user->append( fetch_object(...));.В методе append вы можете определить свои собственные правила добавления выбранного объекта в текущий объект пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...