2012-01-15 7 views
0

다음 함수는 대학에서 주어진 과목을 전공하는 활성 사용자의 친구 목록을 검색합니다. 데이터는 Facebook GRAPH API에서 가져옵니다. 등이 여기에 나의 실패 자상입니다배열의 다차원 배열에서 값 찾기

이제
function getCollegeFriends() { 
     $config = array(
     'appId' => 'XXXXXXXXXXXXX', 
     'secret' => 'XXXXXXXXXXXXXX', 
     ); 
     $facebook = new Facebook($config); 
     $user_id = $facebook->getUser(); 
     try { 
     $fql = "select uid,name,education from user WHERE uid IN (select uid2 from friend where uid1=($user_id))"; 
     $param = array(
     'method' => 'fql.query', 
     'query'  => $fql, 
     'callback' => '' 
     ); 
     $fqlResult = $facebook->api($param); 
     } 
     catch(Exception $o){ 
     d($o); 
     } 

     $friends = $fqlResult; 
     $friends_BA = array(); 
     foreach ($friends as $friend) { 
     $isBA = false; 
      if (is_array($friend['education'])) { 
       foreach ($friend['education'] as $school) { 
       if (isset($school)) { 
        foreach ($school['school'] as $name) { 
         $lowerName = strtolower($name); 
         if (strpos($lowerName, 'university of central florida') !== false || strpos($lowerName, 'ucf') !== false) { 
         $friends_BA[] = $friend['name']; 
         continue 3; // skip to the next friend 


         } 
        } 
        } 
       } 
      } 
      } 
      echo '<pre>'; 
      print_r($friends_BA); 
      echo '</pre>'; 
     } 

나는 같은 회사에서 일 친구의 목록을 반환하는 함수에 일하고 있어요, 동일한 작업 위치를 유지 (이 기능은 작동) 함수는 다음과 같습니다.

function getWorkerFriends() { 
     $config = array(
     'appId' => 'XXXXXXXXX', 
     'secret' => 'XXXXXXXXX', 
     ); 
     $facebook = new Facebook($config); 
     $user_id = $facebook->getUser(); 
     try { 
     $fql = "select uid,name,work_history from user WHERE uid IN (select uid2 from friend where uid1=($user_id))"; 
     $param = array(
     'method' => 'fql.query', 
     'query'  => $fql, 
     'callback' => '' 
     ); 
     $fqlResult = $facebook->api($param); 
     } 
     catch(Exception $o){ 
     d($o); 
     } 

     $friends = $fqlResult; 
     $friends_BA = array(); 
     foreach ($friends as $friend) { 
     $isBA = false; 
      if (is_array($friend['work_history'])) { 
       foreach ($friend['work_history'] as $employer) { 
       if (isset($employer)) { 
        foreach ($employer['location'] as $name) { 
         $lowerName = strtolower($name['company_name']); 
         if (strpos($lowerName, 'ubs') !== false || strpos($lowerName, 'merion') !== false) { 
         $friends_BA[] = $friend['name']; 
         continue 3; // skip to the next friend 


         } 
        } 
        } 
       } 
      } 
      } 
      echo '<pre>'; 
      print_r($friends_BA); 
      echo '</pre>'; 
     } 

이 솔루션은 빈 배열을 반환하지만 테스트 사용자에게는 함수 요구 사항을 충족하는 친구가 있습니다. 아래는 사용자의 친구 목록입니다. 제안 된 솔루션에 대한 도움을 주시면 대단히 감사하겠습니다.

(참고 : 나는이 문제를 지금 하루 세에있어 당신이 빈을 찾을 때까지 모든 변수에 대한

[124] => Array 
    (
     [uid] => 553325624 
     [name] => Persons Name 
     [current_location] => Array 
      (
       [city] => Los Angeles 
       [state] => California 
       [country] => United States 
       [zip] => 
       [id] => 110970792260960 
       [name] => Los Angeles, California 
      ) 

     [work_history] => Array 
      (
      ) 

     [education] => Array 
      (
       [0] => Array 
        (
         [school] => Array 
          (
           [id] => 111894272160018 
           [name] => Spanish River Community High School 
          ) 

         [type] => High School 
        ) 

       [1] => Array 
        (
         [school] => Array 
          (
           [id] => 110186095670702 
           [name] => North Broward Preparatory Schools 
          ) 

         [type] => High School 
        ) 

      ) 

    ) 

[125] => Array 
    (
     [uid] => 560613217 
     [name] => Persons Name 
     [current_location] => Array 
      (
       [city] => Summit 
       [state] => New Jersey 
       [country] => United States 
       [zip] => 
       [id] => 103727996333163 
       [name] => Summit, New Jersey 
      ) 

     [work_history] => Array 
      (
       [0] => Array 
        (
         [location] => Array 
          (
           [city] => 
           [state] => 
          ) 

         [company_name] => Camp High Rocks 
         [description] => 
         [start_date] => 
         [end_date] => 
        ) 

      ) 

     [education] => Array 
      (
       [0] => Array 
        (
         [school] => Array 
          (
           [id] => 106165586082302 
           [name] => Summit Senior High School 
          ) 

         [type] => High School 
        ) 

       [1] => Array 
        (
         [school] => Array 
          (
           [id] => 6192688417 
           [name] => Stanford University 
          ) 

         [year] => Array 
          (
           [id] => 105576766163075 
           [name] => 2015 
          ) 

         [type] => College 
        ) 

      ) 

    ) 
+1

시작 위해서 var_dump. 당신에게 몇 가지 유용한 출력을 얻을해야합니다()와 스크립트가 실패 할 곳에 당신을 표시해야합니다. – Erik

+0

정확히 어디서 찾으십니까? 뼈? 나는 몇 가지를 시도했지만 빈 배열이 있습니다. – buttonitup

+0

오류는 데이터가있는 마지막 배열과 그렇지 않은 첫 번째 배열 사이에 있습니다. – Erik

답변

0

위해서 var_dump, 같은 : 각 [OFFSET]는 활성 사용자의 다른 친구입니다 아래로 페이스 북이 물건을 연결하는 가정하면 모두 제대로 작동 아래의 코드를 시도이며, 이는 각 foreach는 전에 보내고 '

function getWorkerFriends() { 
    $friends = $fqlResult; 

    echo "\$friends <br/>"; 
    var_dump($friends); 

    $friends_BA = array(); 
    foreach ($friends as $friend) { 
    $isBA = false; 

     echo "\$friend <br />"; 
     var_dump($friend); 


     if (is_array($friend['work_history'])) { 
      foreach ($friend['work_history'] as $employer) { 

       echo "\$employer <br />"; 
       var_dump($employer); 

      if (isset($employer)) { 
       foreach ($employer['location'] as $name) { 

        echo "\$name <br />"; 
        var_dump($name); 

        $lowerName = strtolower($name['company_name']); 
        if (strpos($lowerName, 'ubs') !== false || strpos($lowerName, 'merion') !== false) { 
        $friends_BA[] = $friend['name']; 

        echo "Continue to next friend! <br />"; 

        continue 3; // skip to the next friend 


        } 
       } 
       } 
      } 
     } 
     } 
     echo '<pre>'; 
     print_r($friends_BA); 
     echo '</pre>'; 
    } 
+0

https://join.me/344-811-109 및 출력을 보여 드리겠습니다. 해석 방법이 확실치 않으며 많은 부분이 있습니다. – buttonitup

+0

링크가 작동하지 않습니다. 첫 번째 게시물을 출력으로 업데이트하는 방법은 무엇입니까? – Erik

관련 문제