Login
网站首页 > 文章中心 > 其它

php排序的实现_PHP排序算法

作者:小编 更新时间:2023-08-02 10:05:00 浏览量:2人看过

PHP实现的自定义数组排序函数与排序类示例

本文实例讲述了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程序设计有所帮助.

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 ";(还记得我们添加的字段吗?)

这样就完成了文章置顶的功能.

PHP实现常见的排序算法

注:为方便描述,下面的排序全为正序(从小到大排序)

假设有一个数组[a,b,c,d]

冒泡排序依次比较相邻的两个元素,如果前面的元素大于后面的元素,则两元素交换位置;否则,位置不变.具体步骤:

①.,比较a,b这两个元素,如果ab,则交换位置,数组变为:[b,a,c,d]

完成第一轮比较后,可以发现最大的数c已经排(冒)在最后面了,接着再进行第二轮比较,但第二轮比较不必比较最后一个元素了,因为最后一个元素已经是最大的了.

第二轮比较结束后,第二大的数也会冒到倒数第二的位置.

依次类推,再进行第三轮,,,

就这样最大的数一直往后排(冒),最后完成排序.所以我们称这种排序算法为冒泡排序.

选择排序是一种直观的算法,每一轮会选出列中最小的值,把最小值排到前面.具体步骤如下:

插入排序步骤大致如下:

步骤:

从数列中挑出一个元素,称为 "基准"(pivot),

重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边).在这个分区退出之后,该基准就处于数列的中间位置.这个称为分区(partition)操作.

递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序.

php几种排序算法实例详解

下面给你介绍四种排序方法:

①.) 插入排序(Insertion Sort)的基本思想是:?

每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止.实现代码如下:

每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕.实现代码如下:

两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止.实现代码如下:

php实现数组按指定KEY排序的方法

本文实例讲述了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如何实现快速排序

thinkphp使用的数据库是mysql,mysql多个字段排序的语句:

select

asc,...

thinkphp中排序方法为

$User-where('score0')-order('score desc')....;

但是例子中只能单字段排序,不过可以理解成字符串,那就可以这样写试试

$User-where('score0')-order('score desc,id asc,...')....;

以上就是土嘎嘎小编为大家整理的php排序的实现相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章