-2
$array = array(
array(
    'id' => 1,
    'name' => 'John Doe',
    'upline' => 0
),
array(
    'id' => 2,
    'name' => 'Jerry Maxwell',
    'upline' => 1
),
array(
    'id' => 3,
    'name' => 'Roseann Solano',
    'upline' => 1
),
array(
    'id' => 4,
    'name' => 'Joshua Doe',
    'upline' => 1
),
array(
    'id' => 5,
    'name' => 'Ford Maxwell',
    'upline' => 1
),
array(
    'id' => 6,
    'name' => 'Ryan Solano',
    'upline' => 1
),
array(
    'id' =>7,
    'name' => 'John Mayer',
    'upline' => 3
),

); 我想做一个像这样的功能:

function get_downline($userid,$users_array){
}

然后我想返回一个包含所有用户上线键的数组,其值为 $userid。我希望任何人都可以提供帮助。请...

4

3 回答 3

3

你可以用一个简单的循环来完成,但让我们利用这个机会来演示 PHP 5.3 的匿名函数:

function get_downline($id, array $array) {
    return array_filter($array, function ($i) use ($id) { return $i['upline'] == $id; });
}

顺便说一句,我不知道这是否是你想要的,因为你的问题不是很清楚。

于 2012-04-09T00:53:50.987 回答
2

如果你需要通过 $id 搜索你的数组:

foreach($array as $value)
{
   $user_id = $value["id"];
   $userName = $value["name"];
   $some_key++;

   $users_array[$user_id] = array("name" => $userName, "upline" => '1');
}

function get_downline($user_id, $users_array){
     foreach($users_array as $key => $value)
     {
         if($key == $user_id)
         {
              echo $value["name"];
              ...do something else.....
         }
     }
}

或按“上线”搜索:

function get_downline($search_upline, $users_array){
         foreach($users_array as $key => $value)
         {
             $user_upline = $value["upline"];
             if($user_upline == $search_upline)
             {
                  echo $value["name"];
                  ...do something else.....
             }
         }
    }
于 2012-04-09T00:59:27.280 回答
1

代码 :

function get_downline($userid,$users_array) 
{
    $result = array();

    foreach ($users_array as $user)
    {
        if ($user['id']==$userid)
            $result[] = $user['upline'];
    }
    return result;
}
?>

示例用法:

get_downline(4,$array);
于 2012-04-09T00:59:43.273 回答