php
  • variables
  • object
  • append
  • 2010-09-21 97 views 0 likes 
    0

    另一個對象我有這樣的對象:追加對象在PHP

    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的事情,但是當然不是那麼簡單。

    +1

    你有沒有考慮過使用數組? '$ user [1..x] ['stuff']','$ user [1..x] ['otherstuff']' – fredley 2010-09-21 10:39:16

    +0

    這不是唯一的警鐘響。例如。發送一個結構相同的查詢,除了用戶。每行想要獲取的$ num部分是...不是最理想的。甚至有'$ oc-> num_users' ...是的,可能是,但也可能是不必要的,甚至可能容易出錯。也許你應該描述你想解決的問題並尋求一個好的/有效的解決方案。 – VolkerK 2010-09-21 10:59:39

    回答

    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; 
    } 
    
    0

    作爲一對夫婦旁白的,如果你想要訪問對象的user屬性,那麼您應該使用$$user->user,因爲$$user->$user將嘗試訪問編號屬性(例如,對於對象$user12,您試圖訪問$user12->user12)。我也會考慮使用一個陣列,如fredley所建議的(即使用$user[$num]而不是$user = 'user'.$num)。

    接近你原來的問題,而不是使用.=串聯賦值運算符,你可以嘗試添加一個方法你user類,如append,然後用它來所取得的對象附加到當前對象像$user->append(fetch_object(...));。在append方法中,您可以定義您自己的規則,瞭解如何將獲取的對象添加到當前用戶對象。

    相關問題