很多站长朋友们都不太清楚数组随机排序php,今天小编就来给大家整理数组随机排序php,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php里面怎么随机打乱数组? 2、 php 随机排序广告的实现代码 3、 PHP如何从多组数组中抽出所有的值,并随机排序? 4、 php数组随机排序几种方法 5、 使用php语言编写代码,定义一个数组,填充10个100以内随机数,并按从小到大的顺? php里面怎么随机打乱数组?function shuffle(array $array): bool
Description:
打乱数组
本函数打乱(随机排列单元的顺序)一个数组。 它使用的是伪随机数产生器,并不适合密码学的场合。
如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
Param:
array $array 待操作的数组。
Return:
bool 成功时返回 TRUE, 或者在失败时返回 FALSE。
<?php
$numbers = range(1, 20);
shuffle($numbers);
foreach ($numbers as $number) {
echo "$number ";
}
?>
php 随机排序广告的实现代码投放广告的人都很关注他的广告会放在哪个位置,
因为这可能影响点击次数,
甚至是否在第一屏显示.
就这个问题,
其实很容易解决,
只要随机显示广告即可.
代码如何实现?
在这我推荐两种随机显示广告的处理办法.
在后端处理
在后端排序好再输出页面.
将广告节点用数组存放,
对数组进行随机排序,
再输出经过排序的数组.
参考代码
(PHP)
如下:
复制代码
代码如下:
//
用数组存放广告列表
$ads
=
array('<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
1"
width="125"
height="125"
/></a>'
,'<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
2"
width="125"
height="125"
/></a>'
,'<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
3"
width="125"
height="125"
/></a>'
,'<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
4"
width="125"
height="125"
/></a>'
);
//
对数组进行随机排序
shuffle($ads);
//
输出经过排序的数组
$html
=
'';
foreach
($ads
as
$ad)
{
$html
.=
$ad;
}
echo
$html;
我们来扩展一下,
如果我是站长,
预留了
4
个广告位,
但现在只有
3
个在投放;
我想在空置的广告位放置一个
"虚位以待"
的广告招租链接,
并显示在最后,
该如何处理呢?
在排序完成之后再插放广告招租链接就可以了.
复制代码
代码如下:
//
用数组存放广告列表
$ads
=
array('<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
1"
width="125"
height="125"
/></a>'
,'<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
2"
width="125"
height="125"
/></a>'
,'<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
3"
width="125"
height="125"
/></a>'
);
//
对数组进行随机排序
shuffle($ads);
//
输出经过排序的数组
$html
=
'';
foreach
($ads
as
$ad)
{
$html
.=
$ad;
}
//
添加广告招租链接
$html
.=
'<a
href="#"><img
src="sell-/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="虚位以待"
width="125"
height="125"
/></a>';
echo
$html;
我就是用这个方法来输出
125x125
广告的,
因为它直观可靠,
处理方便.
但是如果你希望对页面做静态化,
建议选用
JS
随机排序的方法.
在前端处理
在后端按原有循序输出,
在页面通过
JavaScript
重新排序.
假设页面输出广告区域的
HTML
片段如下.
复制代码
代码如下:
<div
id="ads">
<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
1"
width="125"
height="125"
/></a>
<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
2"
width="125"
height="125"
/></a>
<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
3"
width="125"
height="125"
/></a>
<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
4"
width="125"
height="125"
/></a>
</div>
我们可以通过
JS
来对广告进行重新排序.
参考代码如下:
复制代码
代码如下:
<div
id="ads"
style="display:none;">
<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
1"
width="125"
height="125"
/></a>
<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
2"
width="125"
height="125"
/></a>
<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
3"
width="125"
height="125"
/></a>
<a
href="#"><img
src="/data/upload/help/202303/13/9e9eceab1b539f7e59df6e4fa2370713.png"
alt="广告
4"
width="125"
height="125"
/></a>
</div>
<div
id="random-ads"
style="display:none;">
</div>
<script
type="text/javascript">
//<![CDATA[
var
source
=
document.getElementById('ads');
var
target
=
document.getElementById('random-ads');
var
ads
=
source.getElementsByTagName('a');
//
下标数组
var
arr
=
new
Array();
for(var
i=0;
i<ads.length;
i++)
{
arr[i]
=
i;
}
//
随机排序
function
randomSort(a,
b){
var
tmp
=
parseInt((Math.random()
+
0.5),
10);
return
tmp
?
a-b
:
b-a;
}
//
将老的广告区的节点随机插放到新的广告区
arr.sort(randomSort);
for(var
i=0;
i<arr.length;
i++)
{
target.appendChild(ads[arr[i]].cloneNode(true));
}
//
显示新的广告区和移除老的广告区
source.parentNode.removeChild(source);
target.style.display
=
'block';
//]]>
</script>
如果有如同方法
1
那样的扩展需求,
将空广告位显示在最后,
且显示广告招租链接,
该如何处理?
这个当作课后习题吧...
PHP如何从多组数组中抽出所有的值,并随机排序?array_merge()合并所有的数组
shuffle()然后用此方法打乱数组
在随机取数组中的元素
php数组随机排序几种方法它的用法也很简单:array_rand($arr[, $num])$arr == 用来取元素的数组$num == 随机取下标的个数其中第二个参数 $num 是可选的,默认为1 。注意:它的返回值在第二个参数大于 1 的时候是一个数组;当第二个参数不设或者传值 1 的时候是一个下标。简单的示例代码如下:1、第二个参数不传值的情况;$arr = Array('a', 'b');$rndKey = array_rand($arr);echo $arr[$rndKey];//输出 a 或者 b2、第二个参数传值大于 1 的情况;$arr = Array('a', 'b', 'c', 'd');$rndKey = array_rand($arr, 2);print_r($rndKey]);//输出一个随机key的数组
使用php语言编写代码,定义一个数组,填充10个100以内随机数,并按从小到大的顺?因为语言不同,代码就不贴了,思路如下:
定义数组,因为10个是确定的,所以用第一个for循环循环十次,每次都random出数字赋值给数组,之后冒泡排序,因为冒泡法的循环次数不定,用while内嵌for循环:
while(flag){
flag=false;
for(i=0;i<10;i++)
{if(a[i]>a[i+1]){a[i]=a[i]+a[i+1];a[i+1]=a[i]-a[i+1];a[i]=a[i]-a[i+1];flag=true;}}
}
意思就是每次都用冒泡法给a0~a9两两排序,如果确实有不符合要求的就变动位置,如果都没有那么flag保持初值false则推出while循环
关于数组随机排序php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于数组随机排序php 数组随机排序java的详细内容...