# 帝国CMS如何高效随机调用代码函数

*Published:* 2023-11-19
*Author:* 客服001

#### 温馨提醒

如果文章内容或图片资源失效，请留言反馈，我们会及时处理，谢谢

本文最后更新于2023年11月19日，已超过 180天没有更新



帝国CMS随机调用用’rand()’参数就可以了。

SQL随机调用方法：

```
[e:loop={'select * from [!db.pre!]ecms_news where checked=1 order by rand() desc  limit 10',10,24,0}] 
<li><a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> </li>
[/e:loop]
```

灵动标签随机调用方法：

```
[e:loop={'selfinfo',8,0,0,'','rand()'}]
<li><a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> </li>
[/e:loop]
```

下面这段是官方给出大数据高效随机调用方法，先用PHP随机出信息ID，然后SQL调用用id in (php随机的ID列表)

高效随机调用方法：

```
<?php
$randnum=10;        //随机数量
$randids='';
$randdh='';
for($i=1;$i<=$randnum;$i++)
{
$randids.=$randdh.rand(1,100000);        //1为最小ID，100000为最大ID
$randdh=',';
}
?>
[e:loop={栏目ID,显示条数,操作类型,只显示有标题图片,"id in ($randids)"}]
<li><a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> </li>
[/e:loop]
```

不过这段中的调用数量是固定死的，不方便多次调用，所以封装成[函数](https://www.xarjtc.com/tag/%e5%87%bd%e6%95%b0 "查看函数此标签更多文章")方法。

高效随机调用函数：

```
<?php
$nuber=$empire->gettotal('select count(*) as total from phome_ecms_news');
function rands($num,$nubers){
$randnum=$num;
$randids='';
$randdh='';
for($i=1;$i<=$randnum;$i++){
$randids.=$randdh.rand(1,$nubers);
$randdh=',';
}
$allstr.=$randids;
    echo $allstr;
}
?>
```

首先查询所有信息总数，然后在赋值随机数量。

这段代码只需要写一次，可以重复多次调用。

调用方法：

```
<?=rands(10,$nuber)?>
```

10代表调用10个，调用多少改成多少数字。

附上灵动标签的调用方法：

```
[e:loop={0,1,3,0,"id in ('rands(1,$nuber)')"}]
<li><a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> </li>
[/e:loop]
```