5

我无法弄清楚这一点。

我需要一个解决方案来调用随机函数的百分比。

前任。脚本调用subscriptions() 的概率为10%,系统调用函数“specialitems()”的概率为3%。

我被困在这个问题上,所以我希望有人可以帮助我解决这个问题。

<?php
   class RandomGifts {
   public $chances = '';

   public function __construct($user) {
          $this->user = $user;

          //Find percent for each function
          $this->chances = array( 
                 'subscriptions' => 10, // 10%
                 'specialitems'  => 3,  //  5%
                 'normalitems'   => 30, // 40%
                 'fuser'         => 50, // 70%
                 'giftcards'     => 7,  //  7%
          );

 //This should call the function which has been calculated.
 self::callFunction(?);

 }

   public function subscriptions(){}
   public function specialitems(){}
   public function normalitems(){}
   public function fuser(){}
   public function giftcards(){}

}
?>
4

2 回答 2

4

尝试这个:

$a = rand(1, 100);
$total = 0;
$f = '';
foreach($this->chances as $function => $percent) {
    $total += $percent;
    if($a <= $total) {
        $f = $function;
        break;
    }
}
if(!empty($f))
    $this->$f();

百分比不应加到 100 以上。如果总和低于 100,则剩余百分比为“什么也不做”。

于 2012-12-15T10:45:30.153 回答
-1

然后用你的类和 $var 名称调用一个函数就行了。

$this->$var();
于 2012-12-15T10:46:07.070 回答