php – 合并来自两个不同数据集的数据(Facebook和MySQL)
发布时间:2020-12-13 21:35:31 所属栏目:PHP教程 来源:网络整理
导读:我想知道这是否是解决这个问题的最佳方法.我正在合并一个Facebook用户的朋友数据(来自Facebook – 返回多个数组),其中包含投票的用户(来自 MySQL)的投票. 这就是我完成这个的方法.我是一名初级开发人员,正在寻求帮助,使我的代码尽可能优化. public function
我想知道这是否是解决这个问题的最佳方法.我正在合并一个Facebook用户的朋友数据(来自Facebook – 返回多个数组),其中包含投票的用户(来自
MySQL)的投票.
这就是我完成这个的方法.我是一名初级开发人员,正在寻求帮助,使我的代码尽可能优化. public function getFriendVotes(){ global $facebook; // Get The users friends that use this app from facebook $friends = $facebook->api_client->fql_query( "SELECT uid,first_name,last_name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=$this->user)" ); // Create an array of just the ids foreach($friends as $friend){ $userids[] = $friend['uid']; } // Create a string of these ids $idstring = implode(",",$userids); // Get the votes from only the users in that list that voted $result = $this->db->query( "SELECT vote,userid FROM user_votes WHERE userid IN ($idstring)" ); // Create a new result set (multi array). Include the data from the first // Facebook query,but include only those who voted and append their votes // to the data $row = $result->fetch_assoc(); foreach($friends as $friend){ if($row['userid'] == $friend['uid']){ $return[$count] = $friend; $return[$count]['vote'] = $row['vote']; $row = $result->fetch_assoc(); $count++; } } return $return; } 解决方法
我认为fql_query确实支持mysql语法,使用LEFT JOIN代替creatig额外查询会更有效,这是我的代码版本:
public function getFriendVotes(){ global $facebook; // Get The users friends that use this app from facebook $friends = $facebook->api_client->fql_query(" SELECT DISTINCT u.uid,u.first_name,u.last_name FROM user AS u LEFT JOIN friend AS f ON uid=uid2 WHERE f.uid1='{$this->user}' "); $arrayUsers = array(); // Create an array of just the ids foreach($friends as $v){ $arrayUsers[$friend['uid']] = $v; } unset($friends); // Create a string of these ids $idstring = implode(",array_keys($arrayUsers)); // Get the votes from only the users in that list that voted $result = $this->db->query( "SELECT vote,userid FROM user_votes WHERE userid IN ({$idstring})" ); $result = array(); // Create a new result set (multi array). Include the data from the first // Facebook query,but include only those who voted and append their votes // to the data while($v = $result->fetch_assoc()) { if(isset($arrayUsers[$v['userid']]) { $arrayUsers[$v['userid']] = $v['vote']; $result[] = $arrayUsers[$v['userid']]; unset($arrayUsers[$v['userid']],$v); } } return $return; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |