2012-06-26 3 views
-2

у меня есть этот код прямо здесь, где переменная $friends представляет собой массив с выходом, как это:PHP массив, цикл, чтобы получить точное значение

{ 
    "id": "1149862205", 
    "name": "name", 
    "first_name": "first_name", 
    "last_name": "last_name", 
    "link": "https://www.facebook.com/username", 
    "username": "username", 
    "birthday": "07/12/1990", 
    "hometown": { 
    "id": "108618265828550", 
    "name": "name" 
    }, 

в то время как $fbfriendlikes переменная генерируется идентификатор $friends и имеет такую ​​структуру:

{ 
    "data": [ 
    { 
     "name": "Penelope-ns-test", 
     "category": "Community", 
     "id": "187099821418102", 
     "created_time": "2012-06-14T15:00:59+0000" 
    }, 

Теперь мне нужно напечатать все $friends идентификаторы, которые, как определенный идентификатор в $fbfriendlikes Мой код выглядит следующим образом:

$friends = $facebook->api('/me/friends'); 
if (!empty($friends['data'])) { 
    $size = variable_get('facebook_graph_pic_size_nodes','square'); 
    $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http'; 
    foreach ($friends['data'] as $data) { 
     $fbid = $data['id']; 
     $fbfriendlikes[$fbid]=$facebook->api('/'.$fbid.'/likes'); 
     $fbname = $data['name']; 
     $path = $protocol . '://graph.facebook.com/' . $fbid . '/picture?type=' . $size; 
     $image = theme('image', array('path' => $path, 'alt' => $fbname)); 

     if ($fbfriendlikes["id"] != 184759054887922) { 
      $return .= '<div class="fimage">'.$image.'</div>'; 
      $link = '<a href="'.$protocol . '://www.facebook.com/profile.php?id='.$fbid.'" target="_blank">'.$fbname.'</a>';  
      $return .= '<div class="flink">'.$link.'</div>'; 
      break; 
     } 
    } 
} 

Я знаю я должен сделать петлю Еогеасп в $fbfriendslikes, но я не могу заставить его работать. Не могли бы вы дать мне совет?

+0

попытка Foreach ($ друзья [ "данные"] в $ FData => $ Value), $ FData является массив ключей и $ Value этого значения .. – Gntem

+0

Эй спасибо за ответ, так это понять если я прав, пожалуйста. Мне нужно извлечь id из друзей $, этот id я использую для извлечения данных из $ fbfriendlikes. Мне нужно распечатать информацию из друзей $, но условие должно основываться на $ fbfriendslikes. И, пожалуйста, можете ли вы уточнить, где можно редактировать код? .. thansk –

+0

Возможный дубликат [Пройти через массив, чтобы получить значение] (http://stackoverflow.com/questions/11194910/loop-through-array-to- get-value) – deceze

ответ

0

Вы должны проверить внутри вас петлю, чтобы получить те, которые не нравятся.

$return = ''; 
$friends = $facebook->api('/me/friends'); 
if (!empty($friends['data'])) { 
    $size = variable_get('facebook_graph_pic_size_nodes','square'); 
    $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http'; 
    foreach ($friends['data'] as $data) { 
     $fbid = $data['id']; 
     $fbfriendlikes[$fbid]=$facebook->api('/'.$fbid.'/likes'); 
     $fbname = $data['name']; 
     $path = $protocol . '://graph.facebook.com/' . $fbid . '/picture?type=' . $size; 
     $image = theme('image', array('path' => $path, 'alt' => $fbname)); 

     foreach($fbfriendlikes['data'] as $like) { 
      $likes = false; // set var to check for like 
      if($like['id'] == '184759054887922') { // check if they liked it 
       $likes = true; // set var to true because they liked it 
      } 
      if (!$likes) { // test var to see if false (they did not like) 
       // print this if they did NOT like it, otherwise do nothing 
       $return .= '<div class="fimage">'.$image.'</div>'; 
       $link = '<a href="'.$protocol . '://www.facebook.com/profile.php?id='.$fbid.'" target="_blank">'.$fbname.'</a>';  
       $return .= '<div class="flink">'.$link.'</div>'; 
      } 
     }// go on to next in loop 

    } 
    echo $return; 
} 
+0

Эй, спасибо, так, как вы его разместили, предполагается, что это правильный путь? Благодаря! –

+0

, учитывая то, как вы представили свои данные, и вопросы, я так считаю. По сути, если вы хотите найти те, которые НЕ НУЖНЫ что-то, создайте переменную, для которой по умолчанию установлено значение false, вы должны пропустить их все и установить для этого значение true (я отредактировал свой код, чтобы оглянуться на него), если им нравится он, установите его ИСТИННО и проверьте, что var. Если это неверно), им это не понравилось), печатайте все, что бы они ни делали, ничего не делали и продолжали цикл. – SuperMykEl

0

Попробуйте это:

$return = ''; 
$friends = $facebook->api('/me/friends'); 
if (!empty($friends['data'])) { 
    $size = variable_get('facebook_graph_pic_size_nodes','square'); 
    $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http'; 
    foreach ($friends['data'] as $data) { 
     $fbid = $data['id']; 
     $fbfriendlikes[$fbid]=$facebook->api('/'.$fbid.'/likes'); 
     $fbname = $data['name']; 
     $path = $protocol . '://graph.facebook.com/' . $fbid . '/picture?type=' . $size; 
     $image = theme('image', array('path' => $path, 'alt' => $fbname)); 

     $likes = false; 
     foreach($fbfriendlikes['data'] as $like) { 
      if($like['id'] == '184759054887922') { // maybe $like->id will have to be used instead... 
       $likes = true; 
       break; 
      } 
     } 

     if (!$likes) { 
      $return .= '<div class="fimage">'.$image.'</div>'; 
      $link = '<a href="'.$protocol . '://www.facebook.com/profile.php?id='.$fbid.'" target="_blank">'.$fbname.'</a>';  
      $return .= '<div class="flink">'.$link.'</div>'; 
     } 
    } 
    echo $return; 
} 
+0

Эй, спасибо, но это не работает, похоже, это всего лишь один id. –

+0

Сделал несколько изменений. Попробуй это сейчас. – shadyyx

+0

Спасибо .. я не знаю, на этот раз он круто петли .. –

Смежные вопросы