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 に答える