我正在编写一个生成两个包含数据的数组的项目。一个数组包含特定国家/地区的数据,另一个数组包含所有国家/地区的数据。
例如,如果来自美国的用户发出请求,我们将生成两个包含数据的数组。一个数据仅针对美国,另一个针对全球数据,包括美国。如果访客来自美国,我想让美国阵容有60%的机会被选中。这意味着另一个阵列有40%的机会被选中。
如何对此进行编码?
答案 0 :(得分:7)
if(rand(1, 100) <= $probability_for_first_array)
{
use_the($first_array);
}
else
{
use_the($second_array);
}
我发现这是一个简单易懂的解决方案
答案 1 :(得分:3)
<?php
$us_data = "us";
$worldwide_data = "worldwide";
$probabilities = array($us_data => 0.60, $worldwide_data => 0.40);
/* Code courtesy of Jesse Farmer
* For more details see http://goo.gl/fzq5
*/
function get_data($prob)
{
$random = mt_rand(0, 1000);
$offset = 0;
foreach ($prob as $key => $probability)
{
$offset += $probability * 1000;
if ($random <= $offset)
{
return $key;
}
}
}
?>
Gabi的示例适用于两组,但如果您有更多数据集可供选择,则if-else结构不合适。