Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于权重的PHP重定向URL_Php_Algorithm_Redirect_Random - Fatal编程技术网

基于权重的PHP重定向URL

基于权重的PHP重定向URL,php,algorithm,redirect,random,Php,Algorithm,Redirect,Random,因此,我有一个应用程序,它允许我的客户输入不同的url,并将任意数量的url分配给特定的旋转器,只要权重始终为100 我们向客户端提供了一个链接,当单击该链接时,应该触发一个脚本,该脚本提取该特定旋转器的url和权重,然后根据其权重将最终用户重定向到分配的url之一 我很挣扎,因为url和权重是动态的,可以随时更改。我看过很多例子,但仍然有一个问题。如果有人能在这个问题上提供帮助,那就太好了 谢谢 以下是我的快速实现: <?php $urls = array( array('ur

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

我们向客户端提供了一个链接,当单击该链接时,应该触发一个脚本,该脚本提取该特定旋转器的url和权重,然后根据其权重将最终用户重定向到分配的url之一

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


谢谢

以下是我的快速实现:

<?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);

<?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']);