本文实例讲述了PHP实现的自定义数组排序函数与排序类.分享给大家供大家参考,具体如下:
/*
*
二维数组自定义排序函数
uasort($arr,function_name)
**/
$arr
=
array(
array('a'=1,'b'='c'),
);
function
compare_arr($x,$y){
if($x['b']$y['b']){
return
-1;
}else
}else{
0;
}
uasort($arr,'compare_arr');
foreach($arr
as
$a){
echo
$a['a'].'='.$a['b'].'br/';
手册里的自定义排序类:
class
multiSort
{
var
$key;
//key
in
your
array
//排序函数
参数依次是
数组
待排列索引
排序类型
run
($myarray,
$key_to_sort,
$type_of_sort
'')
$this-key
$key_to_sort;
if
($type_of_sort
==
'desc')
uasort($myarray,
array($this,
'myreverse_compare'));
else
'mycompare'));
$myarray;
//正序
mycompare($x,
$y)
(
$x[$this-key]
$y[$this-key]
)
//逆序
myreverse_compare($x,
更多关于PHP相关内容感兴趣的读者可查看本站专题:<
希望本文所述对大家PHP程序设计有所帮助.
第一步,在文章表里面建两个字段,用于做置顶功能.一个是top字段,timestamp类型,默认选"定义",用于存储置顶操作的时间;还有一个flag字段,int类型,用于判断是否置顶,置顶为1,否则为0..
第二步,模板页面修改.列表选项里面加置顶列,下面对应的行写如下代码:
td class="center" {{if $logs[data].flag}} a href="JavaScript:void(0);" onclick="istop('{{$logs[data].id}}',0)"取消置顶/a{{else}} a href="javascript:void(0);" onclick="istop('{{$logs[data].id}}',1)"置顶/a{{/if}}/td
就是用flag判断是否置顶了.
页面对应的置顶js:
function istop(id,flag){
$.ajax({
type: "POST",
url: "?m={{'article'|encrypt}}a=savePost",data: "id="◆id◆"flag="◆flag,
dataType:"json",
success: function(msg){
if(msg.status == "true")
window.location= '?m={{'article'|encrypt}}';}
alert(msg.message);
});
第三步,程序里只要稍作修改即可.先按是否置顶排序,再按置顶时间排序,再按默认的排序.
$sql .=" ORDER BY flag DESC,top DESC,id DESC ";(还记得我们添加的字段吗?)
这样就完成了文章置顶的功能.
注:为方便描述,下面的排序全为正序(从小到大排序)
假设有一个数组[a,b,c,d]
冒泡排序依次比较相邻的两个元素,如果前面的元素大于后面的元素,则两元素交换位置;否则,位置不变.具体步骤:
①.,比较a,b这两个元素,如果ab,则交换位置,数组变为:[b,a,c,d]
完成第一轮比较后,可以发现最大的数c已经排(冒)在最后面了,接着再进行第二轮比较,但第二轮比较不必比较最后一个元素了,因为最后一个元素已经是最大的了.
第二轮比较结束后,第二大的数也会冒到倒数第二的位置.
依次类推,再进行第三轮,,,
就这样最大的数一直往后排(冒),最后完成排序.所以我们称这种排序算法为冒泡排序.
选择排序是一种直观的算法,每一轮会选出列中最小的值,把最小值排到前面.具体步骤如下:
插入排序步骤大致如下:
步骤:
从数列中挑出一个元素,称为 "基准"(pivot),
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边).在这个分区退出之后,该基准就处于数列的中间位置.这个称为分区(partition)操作.
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序.
下面给你介绍四种排序方法:
①.) 插入排序(Insertion Sort)的基本思想是:?
每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止.实现代码如下:
每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕.实现代码如下:
两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止.实现代码如下:
本文实例讲述了php实现数组按指定KEY排序的方法.分享给大家供大家参考.具体实现方法如下:
array_sort($arr,$keys,$orderby='asc'){
$keysvalue
$new_array
array();
foreach
($arr
$k=$v){
$keysvalue[$k]
$v[$keys];
if($orderby==
'asc'){
asort($keysvalue);
arsort($keysvalue);
reset($keysvalue);
($keysvalue
$new_array[]
$arr[$k];
$new_array;
希望本文所述对大家的php程序设计有所帮助.
thinkphp使用的数据库是mysql,mysql多个字段排序的语句:
select
asc,...
thinkphp中排序方法为
$User-where('score0')-order('score desc')....;
但是例子中只能单字段排序,不过可以理解成字符串,那就可以这样写试试
$User-where('score0')-order('score desc,id asc,...')....;
以上就是土嘎嘎小编为大家整理的php排序的实现相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!