pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

PHP實現(xiàn)的多維數(shù)組排序算法分析

這篇文章主要介紹了PHP實現(xiàn)的多維數(shù)組排序算法,結(jié)合實例形式對比分析了php針對多維數(shù)組及帶有鍵名的多維數(shù)組進(jìn)行排序相關(guān)操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了PHP實現(xiàn)的多維數(shù)組排序算法。分享給大家供大家參考,具體如下:

突然想起了一道面試題,把一個多維數(shù)組排序。

例:

<?php
//有一個多維數(shù)組
$a = array(
  array('key1'=>940, 'key2'=>'blah'),
  array('key1'=>23, 'key2'=>'this'),
  array('key1'=>894, 'key2'=>'that')
);
//那么怎么對key1或者key2進(jìn)行排序呢,這里就需要使用到usort($arr, 'myfunction')函數(shù)了,它的作用是對$arr使用我們自定義的方法進(jìn)行排序,具體使用方法可以查看手冊
//1.對key1的值進(jìn)行排序
function asc_key1_sort($x, $y) {
  //可以輸出一下看看是怎么比較的
  echo 'Iteration:'.$x['key1'].' vs '.$y['key1'];
  if($x['key1'] > $y['key1']) {
    echo 'true<br/>';
    return true;
  }elseif($x['key1'] < $y['key1']) {
    echo 'false<br/>';
    return false;
  }else {
    echo '0';
    return 0;
  }
}
//進(jìn)行排序
usort($a, 'asc_key1_sort');
var_dump($a);
//2.對key2字符進(jìn)行排序
function asc_key2_sort($x, $y) {
  //可以使用strcasecmp()函數(shù)進(jìn)行排序
  echo 'Iteration:'.$x['key2'].' vs '.$y['key2'].'<br/>';
  return strcasecmp($x['key2'], $y['key2']);
}
//進(jìn)行排序
usort($a, 'asc_key2_sort');
var_dump($a);
?>

運行結(jié)果:

Iteration:23 vs 940false
Iteration:894 vs 23true
Iteration:940 vs 23true
Iteration:894 vs 940false
array(3) { [0]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } } Iteration:that vs this
Iteration:blah vs that
array(3) { [0]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } } 

如果我的多維數(shù)組中也有key值呢?

<?php
//有一個多維數(shù)組
$a = array(
  123 => array('key1'=>940, 'key2'=>'blah'),
  349 => array('key1'=>23, 'key2'=>'this'),
  43 => array('key1'=>894, 'key2'=>'that')
);
//那么怎么對key1或者key2進(jìn)行排序呢,這里就需要使用到usort($arr, 'myfunction')函數(shù)了,它的作用是對$arr使用我們自定義的方法進(jìn)行排序,具體使用方法可以查看手冊
//1.對key1的值進(jìn)行排序
function asc_key1_sort($x, $y) {
  //可以輸出一下看看是怎么比較的
  echo 'Iteration:'.$x['key1'].' vs '.$y['key1'];
  if($x['key1'] > $y['key1']) {
    echo 'true<br/>';
    return true;
  }elseif($x['key1'] < $y['key1']) {
    echo 'false<br/>';
    return false;
  }else {
    echo '0';
    return 0;
  }
}
//進(jìn)行排序
usort($a, 'asc_key1_sort');
var_dump($a);
//2.對key2字符進(jìn)行排序
function asc_key2_sort($x, $y) {
  //可以使用strcasecmp()函數(shù)進(jìn)行排序
  echo 'Iteration:'.$x['key2'].' vs '.$y['key2'].'<br/>';
  return strcasecmp($x['key2'], $y['key2']);
}
//進(jìn)行排序
usort($a, 'asc_key2_sort');
var_dump($a);
?>

運行結(jié)果:

Iteration:23 vs 940false
Iteration:894 vs 23true
Iteration:940 vs 23true
Iteration:894 vs 940false
array(3) { [0]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } } Iteration:that vs this
Iteration:blah vs that
array(3) { [0]=> array(2) { ["key1"]=> int(940) ["key2"]=> string(4) "blah" } [1]=> array(2) { ["key1"]=> int(894) ["key2"]=> string(4) "that" } [2]=> array(2) { ["key1"]=> int(23) ["key2"]=> string(4) "this" } } 

這樣的排序結(jié)果不會保留123,349,43。這時候只要把usort()換成uasort就好啦!

PS:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:

在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運算技巧總結(jié)》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:

  • PHP 多維數(shù)組的排序問題 根據(jù)二維數(shù)組中某個項排序
  • array_multisort實現(xiàn)PHP多維數(shù)組排序示例講解
  • PHP 多維數(shù)組排序(usort,uasort)
  • php比較多維數(shù)組中值的大小排序?qū)崿F(xiàn)代碼
  • php簡單實現(xiàn)多維數(shù)組排序的方法
  • php中多維數(shù)組按指定value排序的實現(xiàn)代碼
  • PHP 多維數(shù)組排序?qū)崿F(xiàn)代碼
  • php關(guān)于array_multisort多維數(shù)組排序的使用說明
  • php中array_multisort對多維數(shù)組排序的方法
  • PHP編程實現(xiàn)多維數(shù)組按照某個鍵值排序的方法小結(jié)【2種方法】
  • php實現(xiàn)多維數(shù)組排序的方法示例
【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結(jié)合實例形式分析了php實現(xiàn)針對有序表插值查找的相關(guān)操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現(xiàn)服務(wù)端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現(xiàn)APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要為大家詳細(xì)介紹了php結(jié)合ajaxuploadfile實現(xiàn)無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細(xì)介紹了PHP開發(fā)接口使用RSA進(jìn)行加密解密方法,對此有興趣的朋友可以學(xué)習(xí)下。
這篇文章主要為大家詳細(xì)介紹了搜索附近的人PHP實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
主站蜘蛛池模板: 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 青州开防盗门锁-配汽车芯片钥匙-保险箱钥匙-吉祥修锁店 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 车牌识别道闸_停车场收费系统_人脸识别考勤机_速通门闸机_充电桩厂家_中全清茂官网 | 烟台条码打印机_烟台条码扫描器_烟台碳带_烟台数据采集终端_烟台斑马打印机-金鹏电子-金鹏电子 | 颗粒机,颗粒机组,木屑颗粒机-济南劲能机械有限公司 | 山东信蓝建设有限公司官网| 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 学习安徽网 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 酒万铺-酒水招商-酒水代理| 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 炉门刀边腹板,焦化设备配件,焦化焦炉设备_沧州瑞创机械制造有限公司 | 灰板纸、灰底白、硬纸板等纸品生产商-金泊纸业 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 海南在线 海南一家| 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 合景一建-无尘车间设计施工_食品医药洁净车间工程装修总承包公司 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 膜片万向弹性联轴器-冲压铸造模具「沧州昌运模具」 | 搪玻璃冷凝器_厂家-越宏化工设备 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 急救箱-应急箱-急救包厂家-北京红立方医疗设备有限公司 | 一路商机网-品牌招商加盟优选平台-加盟店排行榜平台 | 一航网络-软件测评官网|