Я пытаюсь придумать способ работы с тем, что потенциально может быть очень большим набором массивов. То, что я делаю, работает с графиком facebook api.PHP найти ключ индекса массива многомерного массива для обновления массива
Поэтому, когда пользователь подписывается на службу, которую я создаю, я храню свой идентификатор facebook в таблице в своем сервисе. Дело в том, чтобы позволить пользователю, который подписывается на мою службу, найти друзей, которые находятся на facebook, а также зарегистрировались в моем сервисе, чтобы найти друг друга легче.
То, что я пытаюсь сделать в настоящее время, - это взять объект, возвращаемый facebook api для данных /me/friends
, и передать его функции, которую я создаю в моей базе данных для идентификатора, найденного в данных FB, который отлично работает , Кроме того, в то время как весь этот бит продолжается, у меня есть массив только для создания facebook id, поэтому я могу использовать их в сценарии in_array
. Поскольку мой запрос возвращает только найденный facebook id
Хотя эти данные зацикливаются на себе, чтобы создать запрос, я также обновляю объект, чтобы содержать еще одну пару ключ/значение для каждого элемента в списке, который равен "are_friends"=> false
. До сих пор все работает плавно и относительно быстро, и у меня есть результаты моего запроса. Который я зацикливаюсь.
Так что я нахожусь в той части, где хочу избежать петли в цикле. Вот где бит in_array()
приходит. Поскольку я создал массив сохраненных идентификаторов fb, я могу теперь перебирать мои результаты, чтобы увидеть, есть ли совпадение, и в этом случае я хочу взять исходный объект, который я добавил 'are_friends'=>false
, и изменить его те в этом наборе, которые соответствуют «true», а не 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
)
)
)
As по запросу
Это мой текущий код логики, что я пытаюсь описать выше ..
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;
}
Вы можете опубликовать свой текущий код с двойным циклом, я не могу понять, что вам нужно –
отредактировал мое сообщение, чтобы отразить код – chris