我试图想出一种可能是非常大的数组集的工作方式。我正在做的是使用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