Php 如何选择所有用户推荐id?
如何选择所有用户推荐Php 如何选择所有用户推荐id?,php,Php,如何选择所有用户推荐 | id | user_id | friend_id | |-------|--------------------|--------------| | 1 | 1 | 2 | | 2 | 2 | 3 | | 3 | 3 | 4 | | 4 |
| id | user_id | friend_id |
|-------|--------------------|--------------|
| 1 | 1 | 2 |
| 2 | 2 | 3 |
| 3 | 3 | 4 |
| 4 | 10 | 15 |
因此,在上面的实例中,用户1的推荐线索为3,因为他们推荐的人,推荐了某人,然后他们推荐的人推荐了其他人
作为一个php函数来做可能更好,但我正努力想弄清楚它
下面是我的代码
public function has_child($referee_referees){
$this->db->select("user_account_phone");
$this->db->where('referee_phone_number', $referee_referees);
$query = $this->db->get('account');
if($query->num_rows() == 0) {
return FALSE;
}
return TRUE;
}
public function get_referee_referee_details($user_account_phone){
$this->db->select('user_account_phone');
$this->db->where('referee_phone_number', $product_phone_number);
$query = $this->db->get('account');
foreach($query->result() as $rows){
$child_ids[$rows->user_account_phone] = $rows->user_account_phone;
$referee_referees = $rows->user_account_phone;
if($this->has_child($referee_referees)){
$child_ids[$rows->user_account_phone] = $this->get_referee_referee_details($rows->user_account_phone);
}
echo "<pre>";
var_dump($child_ids);
echo "</pre>";
return $child_ids;
}
// return $child_ids;
}
您必须编写一些代码来迭代结果 此代码非常粗糙,不适用于已推荐多人的用户
$users = array(
array("id" => 1, "user_id" => 1 , "friend_id" => 2,),
array("id" => 2, "user_id" => 2 , "friend_id" => 3,),
array("id" => 3, "user_id" => 3 , "friend_id" => 4,),
array("id" => 4, "user_id" => 10, "friend_id" => 15,),
);
function getRefferrals(&$users, $userId)
{
$referrals = 1;
foreach($users as $user) {
if($user["user_id"] == $userId) {
$referrals += getRefferrals($users, $user["friend_id"]);
}
}
return $referrals;
}
$referrals = getRefferrals($users, 1) - 1;
var_dump($referrals);
有趣的问题
我试过了最短的代码
这将起作用-您可以使用不同的数据进行测试
从演示中选择friend_id,其中user_id=1,或在演示中选择user_id,如果内存中的数据对于大表来说是有问题的
如果内存中没有数据,可以检查用户是否有friend_id,以及该id是否存在于表中这是数据库吗?你在使用MySQL吗?到目前为止,您尝试了什么?显示您的代码您尝试了什么。从referraliam使用MySQL中选择*在要求其他人为您编码之前,您应该首先定义您的代码。别忘了更改该表上的表名。。。它的演示在我的查询中…你可以改变这一点谢谢你,我正在使用CODEIGNITER,我正在寻找解决方法。到时会通知你的。你真是一个伟大的人你好,卡托纳。亚伯,非常感谢,它很管用。我非常感谢你的帮助
$users = array(
array("id" => 1, "user_id" => 1 , "friend_id" => 2,),
array("id" => 2, "user_id" => 2 , "friend_id" => 3,),
array("id" => 3, "user_id" => 3 , "friend_id" => 4,),
array("id" => 4, "user_id" => 10, "friend_id" => 15,),
);
function getRefferrals(&$users, $userId)
{
$referrals = 1;
foreach($users as $user) {
if($user["user_id"] == $userId) {
$referrals += getRefferrals($users, $user["friend_id"]);
}
}
return $referrals;
}
$referrals = getRefferrals($users, 1) - 1;
var_dump($referrals);