1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| function prsort($a, $b)
{
if ($a['pound'] == $b['pound'])
{
return 0;
}
return ($a['pound'] > $b['pound']) ? 1 : -1;
}
function array_prand($array, $pounds = array())
{
$parray = array();
$ptotal = 0;
foreach ($array as $key=>$value)
{
$eff = (isset($pounds[$value]) && !empty($pounds[$value])) ? $pounds[$value] : 1;
$parray[$key] = array('value' => $value, 'pound' => $eff);
$ptotal += $eff;
}
uasort($parray, 'prsort');
$random = rand(1, $ptotal);
$total = 0;
foreach ($parray as $key=>$value)
{
if( $random > $total && $random <= ($total + $value['pound']))
break;
$total += $value['pound'];
}
return $key;
}
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
$pounds = array(5 => 3);
echo( $array[array_prand($array, $pounds)] ); |
Partager