PHP选择时间的数组项百分比?

时间:2013-03-12 06:12:51

标签: php arrays

我试图找出一种方法来选择一定比例的特定数组项目。所以我们说:

$testArray = array('item1', 'item2', 'item3', 'item4', 'item5');

现在我如何选择item1让我们说40%的时间。我知道这可能很容易,但我今天似乎无法绕过它。

1 个答案:

答案 0 :(得分:3)

这些百分比:

$chances = array(40,15,15,15,15);

选择1到100之间的随机数:

$rand = rand(1,100);

然后选择相应的数组项:

| item1              | item2  | item3  | item4  | item5  |
0                   40       55       70       85       100
$ref = 0;
foreach ($chances as $key => $chance) {
    $ref += $chance;
    if ($rand <= $ref) {
        return $testArray[$key];
    }
}

更通用解决方案的可能改进:

  • 使用array_sum()代替100
  • 确保$chances具有与输入数组相同的键(即使用array_keysarray_combine