2011-11-21 67 views
0

我的影片由由SQL查詢返回的一組數據:如何向條目數組中添加/刪除條目?

$_SESSION['licensed_users'] = $db->get_results("SELECT np.id FROM `new_people` np LEFT JOIN institute.users_roles ur ON np.institute_uid = ur.uid WHERE np.company_id=$company_id AND ur.rid=8 AND np.active = 1"); 

這將返回一個數組,看起來像這樣:

Array ( 
    [0] => stdClass Object ([id] => 25590) 
    [1] => stdClass Object ([id] => 40657) 
    [2] => stdClass Object ([id] => 60685) 
    [3] => stdClass Object ([id] => 61900) 
    [4] => stdClass Object ([id] => 65224) 
    [5] => stdClass Object ([id] => 65369) 
    [6] => stdClass Object ([id] => 79171) 
    [7] => stdClass Object ([id] => 80763) 
    [8] => stdClass Object ([id] => 80762) 
    [9] => stdClass Object ([id] => 80761) 
) 

在我的代碼迴路的另一部分通過值,以查看當前用戶是否是該陣列的一部分:

foreach($_SESSION'licensed_users'] as $key=>$value) { 
    if($value->id == $people_id) { 
     $is_licensed = true; 
    } 
} 

$is_licensed被用來確定哪組表單字段顯示給TH e用戶。當用戶提交表單時,如果某個字段組被設置爲某個值,我需要將用戶($ people_id)添加到$_SESSION['licensed_users']數組中,如果$is_licensed爲false,或者如果$is_licensed爲true,則將其從數組中移除。確定採取何種行動的代碼是沒有問題的;我無法記住/想出如何添加到對象數組。我看過thisthis,但我已經知道ID是否在陣列中;我只需要能夠添加或刪除它。

(是的,我們正在使用的會話變量的理由 - 我們需要的是能夠在網站的頁面之間傳遞值它要麼或餅乾。)

我試過$_SESSION['licensed_users'][] = array("id"=>$people_id);但似乎並沒有做任何事情。

+0

有關使什麼'$ DB-> get_results'不僅返回數組,但指數與他們'id'。然後,您可以執行'isset($ _ SESSION'licensed_users'] [$ people_id])'來確定是否存在這樣的條目(並且您將直接擁有該條目)。 – hakre

+0

@hakre - 我不確定你的意思。我將如何強制我的查詢返回一個由id索引的數組? – EmmyS

回答

2

要刪除$的Lu [6]:

unset($lu[6]); 

添加元素:

$lu[] = $current_user; 
+0

謝謝;我在回答時編輯了原文,請看一下。此外,您的版本添加不會考慮到這是一個對象數組的事實 - $ people_id值需要作爲數組添加爲'id'的鍵。 – EmmyS

+0

在這種情況下,您只需使$ current_user成爲您想要的數據的對象。 $ current_user可以是任何東西。如果您正在尋找將數組轉換爲對象的簡寫形式,您可以嘗試使用'$ current_user =(object)數組'('id'=> $ people_id)'。 –

+0

我試過這個:'$ add_person =(object)array('id'=> $ people_id); $ _SESSION ['licensed_users'] [] = $ add_person;'。它不起作用;沒有錯誤,只是不更新​​數組。我究竟做錯了什麼? – EmmyS