我試圖想出一種可能是非常大的數組集的工作方式。我正在做的是使用facebook圖形API。PHP找到多維數組的數組索引鍵來更新數組
因此,當用戶註冊我正在構建的服務時,我將他們的Facebook ID存儲在我的服務中的表格中。關鍵是允許註冊我的服務的用戶找到他們在Facebook上的朋友,並且通過我的服務註冊了他們,以便更輕鬆地找到彼此。
我現在想要做的是將facebook api返回的對象作爲/me/friends
數據,並將其傳遞給一個函數,我已經建立一個查詢到我的數據庫中的FB數據中發現的ID,它工作正常。此外,雖然這一切正在進行,我有一個只是facebook id的建立陣列,所以我可以在in_array
場景中使用它們。因爲我的查詢只返回找到的匹配的facebook編號
雖然此數據通過自身循環以創建查詢,但我還更新了對象以包含列表中每個項目多一個鍵/值對,即"are_friends"=> false
至此爲止這一切運行平穩,相對較快,我有我的查詢結果。我正在循環。
所以我在一個部分,我想避免循環內有一個循環。這是in_array()
位進來的地方。因爲我創建了存儲的fb ID的數組,所以我現在可以循環查看結果,看看是否有匹配,並且在這種情況下,我想將'are_friends'=>false
附加到的原始對象添加到並更改該集合中的那些匹配「真」而不是假。如果不循環結果數組的循環內的原始數組,我只是想不出一個好方法。
所以我希望有人可以幫我想出了一個解決方案在這裏沒有這種二次迴路
的陣列到這一點,因爲原來的樣子
Array(
[data](
[0] => array(
are_fb_friends => false
name => user name
id => 1000
)
[1] => array(
are_fb_friends => false
name => user name
id => 2000
)
[2] => array(
are_fb_friends => false
name => user name
id => 3000
)
)
)
作爲開始起飛每個請求
這是我目前的代碼邏輯,我試圖在上面描述..
public function fromFB($arr = array())
{
$new_arr = array();
if((is_array($arr))&&(count($arr) > 0))
{
$this->db->select()->from(MEMB_BASIC);
$first_pass = 0;
for($i=0;$i < count($arr);$i++)
{
$arr[$i]['are_fb_friends'] = "false";
$new_arr[] = $arr[$i]['id'];
if($first_pass == 0)
{
$this->db->where('facebookID', $arr[$i]['id']);
}
else
{
$this->db->or_where('facebookID', $arr[$i]['id']);
}
$first_pass++;
}
$this->db->limit(count($arr));
$query = $this->db->get();
if($query->num_rows() > 0)
{
$result = $query->result();
foreach($result as $row)
{
if(in_array($row->facebookID, $new_arr))
{
array_keys($arr, "blue");
}
}
}
}
return $arr;
}
你可以發佈你的雙循環當前代碼,我不能完全理解你需要什麼 – 2013-03-11 08:09:34
編輯我的帖子,以反映代碼以及 – chris 2013-03-11 12:35:46