每次foreach遍历它的循环时,我都有以下代码用于从数组中选择一个随机项。
<?php $variables = array('success', 'warning', 'info', 'danger'); ?>
<?php foreach($os->list as $list): $var = 'success'; ?>
<div class="progress-bar progress-bar-<?php echo $variables[array_rand($variables)]; ?>" style="width: <?php echo $list->metrics->visits; ?>%" title="<?php echo $list->os.' '.$list->version; ?>">
<span class="sr-only"><?php echo $list->metrics->visits; ?>%</span>
</div>
<?php endforeach; ?>
我唯一的问题是,有一次它选择success
,然后下次选择success
时,你无法区分数据。如果它选择了以下内容我会没事的。
success, info, danger, success, danger, info
不是:
success, info, info, danger, success, success
两个项目并排结束的地方。
有没有办法做到这一点,还是我在浪费时间?
更新
我虽然这样,但我不知道该去哪里:
<?php foreach($os->list as $list): $var = 'success'; ?>
<?php
if($var){
$var1 = $var;
$var = $variables[array_rand($variables)];
if($var == $var1){
}
}
?>
<div class="progress-bar progress-bar-<?php echo $var; ?>" style="width: <?php echo $list->metrics->visits; ?>%" title="<?php echo $list->os.' '.$list->version; ?>">
答案 0 :(得分:0)
只需删除当前选定的数组项并重新排序该数组 How to Remove Array Element and Then Re-Index Array?
答案 1 :(得分:0)
尝试这样的事情
$a = array('success', 'info', 'danger', 'warning');
$temp = array();
for ($i = 0; $i < 10; $i++) {
$idx = array_rand($a);
$result = $a[$idx];
unset($a[$idx]);
$a = array_merge($a, $temp);
$temp = array();
echo $result."\n";
$temp[] = $result;
}
这会将最后选定的元素移出数组,并在下一次迭代选择随机元素后将其移回。