php数组随机排序(php数组元素)
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="ad-125x125.png"
alt="广告
1"
width="125"
height="125"
//a'
,'a
href="#"img
src="ad-125x125.png"
alt="广告
2"
width="125"
height="125"
//a'
,'a
href="#"img
src="ad-125x125.png"
alt="广告
3"
width="125"
height="125"
//a'
,'a
href="#"img
src="ad-125x125.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="ad-125x125.png"
alt="广告
1"
width="125"
height="125"
//a'
,'a
href="#"img
src="ad-125x125.png"
alt="广告
2"
width="125"
height="125"
//a'
,'a
href="#"img
src="ad-125x125.png"
alt="广告
3"
width="125"
height="125"
//a'
);
//
对数组进行随机排序
shuffle($ads);
//
输出经过排序的数组
$html
=
'';
foreach
($ads
as
$ad)
{
$html
.=
$ad;
}
//
添加广告招租链接
$html
.=
'a
href="#"img
src="sell-ad-125x125.png"
alt="虚位以待"
width="125"
height="125"
//a';
echo
$html;
我就是用这个方法来输出
125x125
广告的,
因为它直观可靠,
处理方便.
但是如果你希望对页面做静态化,
建议选用
JS
随机排序的方法.
在前端处理
在后端按原有循序输出,
在页面通过
JavaScript
重新排序.
假设页面输出广告区域的
HTML
片段如下.
复制代码
代码如下:
div
id="ads"
a
href="#"img
src="ad-125x125.png"
alt="广告
1"
width="125"
height="125"
//a
a
href="#"img
src="ad-125x125.png"
alt="广告
2"
width="125"
height="125"
//a
a
href="#"img
src="ad-125x125.png"
alt="广告
3"
width="125"
height="125"
//a
a
href="#"img
src="ad-125x125.png"
alt="广告
4"
width="125"
height="125"
//a
/div
我们可以通过
JS
来对广告进行重新排序.
参考代码如下:
复制代码
代码如下:
div
id="ads"
style="display:none;"
a
href="#"img
src="ad-125x125.png"
alt="广告
1"
width="125"
height="125"
//a
a
href="#"img
src="ad-125x125.png"
alt="广告
2"
width="125"
height="125"
//a
a
href="#"img
src="ad-125x125.png"
alt="广告
3"
width="125"
height="125"
//a
a
href="#"img
src="ad-125x125.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;
iads.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;
iarr.length;
i++)
{
target.appendChild(ads[arr[i]].cloneNode(true));
}
//
显示新的广告区和移除老的广告区
source.parentNode.removeChild(source);
target.style.display
=
'block';
//]]
/script
如果有如同方法
1
那样的扩展需求,
将空广告位显示在最后,
且显示广告招租链接,
该如何处理?
这个当作课后习题吧...
PHP如何从多组数组中抽出所有的值,并随机排序?
array_merge()合并所有的数组
shuffle()然后用此方法打乱数组
在随机取数组中的元素
使用php语言编写代码,定义一个数组,填充10个100以内随机数,并按从小到大的顺?
因为语言不同,代码就不贴了,思路如下:
定义数组,因为10个是确定的,所以用第一个for循环循环十次,每次都random出数字赋值给数组,之后冒泡排序,因为冒泡法的循环次数不定,用while内嵌for循环:
while(flag){
flag=false;
for(i=0;i10;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循环