2012-01-15 17 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>'; 
     } 

このソリューションは、ちょうど空の配列を返しますが、テストユーザーは、機能の要件を満たす友達がいません。以下は、ユーザーのフレンドリストの配列です。提案された解決策の助けがあれば大いに感謝します。私は今この問題の3日目だ:

(注:各[OFFSET]アクティブなユーザーの異なる友人である:あなたが空のものを見つけるまで、すべての変数のための

[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

各foreachの前に、INGのスタートのvar_dump」()およびスクリプトが失敗したところ、それはあなたが表示されるはずです。 – Erik

+0

正確にはどういう意味ですか?ベルス?私はいくつか試しましたが、ただ空の配列があります。 – buttonitup

+0

エラーは、データを持つ最後の配列と最初にない配列の間になります。 – Erik

答えて

0

のvar_dump、など 以下のように自分のFacebookのものを接続すると仮定すると、すべて以下のコードを試してみてください正常に動作している、これはあなたにいくつかの有用な出力を取得する必要があります。

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