首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于权重的PHP重定向URL

基于权重的PHP重定向URL
EN

Stack Overflow用户
提问于 2011-02-08 08:43:57
回答 1查看 892关注 0票数 0

因此,我有一个应用程序,它允许我的客户输入不同的url,并将他想要的任意数量分配给特定的旋转者,只要权重总和为100。

有一个我们提供给客户的链接,当点击这个链接时,应该会触发一个脚本,该脚本会拉取特定旋转器的url和权重,然后根据其权重将最终用户重定向到其中一个分配的url。

我在苦苦挣扎,因为url和权重是动态的,随时都可以改变。我看过很多例子,但仍然有一个问题。如果有人能在这个特定的问题上提供帮助,那就太好了。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-02-08 09:04:02

下面是我的快速实现:

代码语言:javascript
运行
复制
<?php

$urls = array(
    array('url' => 'http://google.com', 'weight' => 50),
    array('url' => 'http://microsoft.com', 'weight' => 13),
    array('url' => 'http://apple.com', 'weight' => 42),
);

$total_weight = 0;
foreach ($urls as $url) {
    $total_weight += $url['weight'];
}

$rand = mt_rand(1, $total_weight);
var_dump($rand);

$selected_url = '';
foreach ($urls as $url) {
    $rand -= $url['weight'];

    if ($rand <= 0) {
        $selected_url = $url['url'];
        break;
    }
}

var_dump($selected_url);

另一个,更高尚一点:

代码语言:javascript
运行
复制
<?php

$urls = array(
    array('url' => 'http://google.com', 'weight' => 50),
    array('url' => 'http://microsoft.com', 'weight' => 13),
    array('url' => 'http://apple.com', 'weight' => 42),
);

$probs = array();
foreach ($urls as $i => $url) {
    $probs = array_merge($probs, array_fill(1, $url['weight'], $i));
}

$rand = array_rand($probs);
var_dump($rand);
var_dump($urls[$probs[$rand]]['url']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4928436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档