我得到了这个,我只想显示一个广告,但随机,如果预算更高,它有更多的显示变化。这是我现在的代码:
我已经有一部分,它计算百分比从100%与许多小数,但我迷失在试图显示广告与百分比计算,只显示一个广告。
如果您有任何问题或类似的问题,请随时提问!
@php
$advertisment = DB::table('advertisment')
->orderBy('id', 'desc')
->get();
$totalbudget = 0;
$random = rand(100, 100000000000000);
$random1 = $random / 1000000000000;
echo $random1;
echo '<br><br>';
foreach ($advertisment as $ad) {
$total = $totalbudget + $ad->budget;
$totalbudget = $total;
}
// check what advertisment is the closest to the random number given
@endphp发布于 2019-09-28 23:37:57
我想我懂了。如果您的所有广告都有预算,并且您的random1表示百分比(1 - 100),您可以在现有函数中尝试此方法。它仍然会计算出你想要的总数,只需在集合上使用Laravel sum()函数即可。注意,为了清楚起见,我将广告集合重命名为复数。
$totalbudget = $advertisements->sum('budget');
$closest = null;
$closestAd = false
foreach ($advertisements as $ad) {
// first get percentage of total for this budget:
$thisPercent = ($ad->budget * 100) / $totalbudget;
if ($closest === null || abs($random1 - $closest) > abs($thisPercent - $random1)) {
$closest = $thisPercent;
$colsestAd = $ad;
}
}在循环结束时,您可以获得百分比($closest)、广告本身($closestAd)和预算($closestAd->budget)。
有几个未知数,所以这段代码可能不能准确地工作。请将其作为指南,并进行调整以使其为您工作。
https://stackoverflow.com/questions/58147527
复制相似问题