0

URLをエコーし​​、ソースアンカーテキストをランダム化するための単純な埋め込みボックスを設定しようとしています。私はこれで両方を達成しました:

<textarea class="cf" onclick="this.focus();this.select()" readonly="readonly">
<iframe src="<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo $url;
?>" width="550px" height="400px" frameborder="0" scrolling="auto" allowtransparency="true"><a href="http://example.com/"><?php 
$raAnchor = array(1 => 'example.com', 
           2 => 'http://example.com/', 
           3 => 'www.example.com', 
           4 => 'Click here');  
$raNumber = count($raAnchor); 
echo $raAnchor[rand(1, $raNumber)]; 
?></a></iframe>
</textarea>

問題:特定のエコーを優先するために、配列からのランダムな結果にどのように重みを付けるのですか?たとえば、example.comが50%の時間エコーアウトするようにします。私はこのように配列にもっとexample.comを入れることができると思います:

1 => 'example.com', 
2 => 'example.com', 
3 => 'example.com', 
4 => 'example.com', 
5 => 'http://example.com/', 
6 => 'www.example.com', 
7 => 'Click here');  

よりエレガントな解決策が必要なようです。私はプログラミングに不慣れで、phpはほとんど理解していないので、正しい方向に私を向けることができれば、そこからそれを取ることができます。

ありがとう。

4

3 に答える 3

1

あなたはこれを行うことができます:

<?php
    if(rand(1,2) == 1)
    {
        //Example goes here
    }
    else
    {
        //Everything else
    }
?>

間隔を置いて同じことを行うことができます。例えば:

<?php
    $r = rand(1,10); 
    if($r >=1 && $r < 4)
    {
        /* 30% */
    }
    else if($r >=4 && $r < 9)
    {
        /* 60% */
    }
    else
    {
        /* 10% */
    }
?>
于 2012-06-01T13:42:17.537 に答える
1

いつでも1〜100の乱数を生成できます。次に、<= 40の場合は、1を選択します。それ以外の場合は、別の乱数を実行して2〜7を選択します。

于 2012-06-01T13:42:34.960 に答える
1

大きなMAX値を選択し、1/100ベースで再生するだけです(より柔軟、よりランダム)

if (($index = mt_rand(1,1000))<500) {
   // yes, 50%
   shuffle($arr);
   return $arr[$index];
}
else {
   // the other 50%
}

または単にランダム:

shuffle($arr);
return $arr[ array_rand($arr) ];
于 2012-06-01T13:57:06.413 に答える