最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php array_map array_multisort 高效處理多維數(shù)組排序

 更新時(shí)間:2009年06月11日 03:06:12   作者:  
用array_map和array_multisort高效處理多維數(shù)組排序的實(shí)現(xiàn)代碼。
對多維數(shù)組排序,通用的作法是
1 獲取利用排序的數(shù)據(jù)并且將其放入數(shù)組$arrSort. 其中鍵索引為要排序數(shù)組的索引,保證唯一性
2 利用排序函數(shù)sort等對$arrSort進(jìn)行排序.
3 遍歷$arrSort, 根據(jù)其索引,獲取多維數(shù)組的數(shù)據(jù),重新構(gòu)造排序后的多維數(shù)組.
復(fù)制代碼 代碼如下:

Array
(
[0] => Array
(
[link] => test
[name] => test.rpm
[type] => file
[size] => 988.9k
[mtime] => 1185160178)
....
)

I 很久以前在網(wǎng)上找到的一個(gè)排序函數(shù),談不上高效,但很實(shí)用
復(fù)制代碼 代碼如下:

_array_sort($arrFile, 1, 1);//根據(jù)name字段排序
_array_sort($arrFile, 3, 1);//根據(jù)size字段排序
/*
@records 要排序的數(shù)組
@field要排序的字段,注意是數(shù)字
@reverse正序還是反序
*/
function _array_sort($records, $field, $reverse, $defaultSortField = 0)
{
$uniqueSortId = 0;
$hash = array();
$sortedRecords = array();
$tempArr = array();
$indexedArray = array();
$recordArray = array();

foreach($records as $record)
{
$uniqueSortId++;
$recordStr = implode("|", $record)."|".$uniqueSortId;
$recordArray[] = explode("|", $recordStr);
}

$primarySortIndex = count($record);
$records = $recordArray;

foreach($records as $record)
{
$hash[$record[$primarySortIndex]] = $record[$field];
}
uasort($hash, "strnatcasecmp");
if($reverse)
$hash = array_reverse($hash, true);

$valueCount = array_count_values($hash);

foreach($hash as $primaryKey => $value)
{
$indexedArray[] = $primaryKey;
}

$i = 0;
foreach($hash as $primaryKey => $value)
{
$i++;
if($valueCount[$value] > 1)
{
foreach($records as $record)
{
if($primaryKey == $record[$primarySortIndex])
{
$tempArr[$record[$defaultSortField]."__".$i] = $record;
break;
}
}

$index = array_search($primaryKey, $indexedArray);

if(($i == count($records)) || ($value != $hash[$indexedArray[$index+1]]))
{
uksort($tempArr, "strnatcasecmp");

if($reverse)
$tempArr = array_reverse($tempArr);

foreach($tempArr as $newRecs)
{
$sortedRecords [] = $newRecs;
}

$tempArr = array();
}
}
else
{
foreach($records as $record)
{
if($primaryKey == $record[$primarySortIndex])
{
$sortedRecords[] = $record;
break;
}
}
}
}
return $sortedRecords;
}

II 用array_map和array_mutisort來排序
array_mutisort還可以根據(jù)多個(gè)值來進(jìn)行二次或者三次排序,這是上一個(gè)函數(shù)所不能比的.
復(fù)制代碼 代碼如下:

利用array_map獲取要依據(jù)排序的數(shù)組
$arrField = array_map(create_function('$n', 'return $n["size"];'), $arrFile);
//利用array_mutisort來進(jìn)行排序
$array_multisort($arrField, SORT_DESC, $arrFile);

III 最終測試
以188條數(shù)據(jù)的數(shù)組進(jìn)行測試, 排序50次求平均值.
第一種方式
0.04269016 name
0.04267142 size
第二種方式
0.001249 name
0.00083924 size

結(jié)果不言而喻

相關(guān)文章

  • php用戶登錄之cookie信息安全分析

    php用戶登錄之cookie信息安全分析

    這篇文章主要介紹了php用戶登錄之cookie信息安全,介紹了cookie加密與令牌保護(hù)兩種cookie信息安全保護(hù)的技巧,需要的朋友可以參考下
    2016-05-05
  • PHP程序員學(xué)習(xí)使用Swoole的理由

    PHP程序員學(xué)習(xí)使用Swoole的理由

    這篇文章給大家詳細(xì)分析了為什么PHP程序員需要學(xué)習(xí)使用Swoole,并通過實(shí)例做了分析,有興趣的朋友參考下。
    2018-06-06
  • PHP HTML代碼串截取代碼

    PHP HTML代碼串截取代碼

    需求:將一段文字截取一定的物理長度顯示,注意,要截取的不是字符串的字節(jié)數(shù),UFT-8 的編碼中文字符是3個(gè)字節(jié)或者4個(gè)字節(jié)的,而顯示的時(shí)候中文會占兩個(gè)字符的長度,英文字符只占一個(gè),全角的時(shí)候又有不同。
    2008-12-12
  • PHP+MySQL實(shí)現(xiàn)輸入頁碼跳轉(zhuǎn)到指定頁面功能示例

    PHP+MySQL實(shí)現(xiàn)輸入頁碼跳轉(zhuǎn)到指定頁面功能示例

    這篇文章主要介紹了PHP+MySQL實(shí)現(xiàn)輸入頁碼跳轉(zhuǎn)到指定頁面功能,結(jié)合實(shí)例形式分析了php連接mysql數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢及分頁顯示、指定頁數(shù)跳轉(zhuǎn)顯示等相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • Laravel中間件的使用詳解

    Laravel中間件的使用詳解

    Laravel?中間件提供了一種方便的機(jī)制來過濾進(jìn)入應(yīng)用的?HTTP?請求。這篇文章主要和大家介紹一下Laravel中間件的創(chuàng)建和使用,需要的可以參考一下
    2023-02-02
  • php采集文章中的圖片獲取替換到本地(實(shí)現(xiàn)代碼)

    php采集文章中的圖片獲取替換到本地(實(shí)現(xiàn)代碼)

    本篇文章是對php采集文章中的圖片獲取替換到本地的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • php實(shí)現(xiàn)URL加密解密的方法

    php實(shí)現(xiàn)URL加密解密的方法

    這篇文章主要介紹了php實(shí)現(xiàn)URL加密解密的方法,結(jié)合實(shí)例形式分析了php針對URL字符串進(jìn)行加密解密操作的相關(guān)技巧,需要的朋友可以參考下
    2016-11-11
  • PHP實(shí)現(xiàn)深度優(yōu)先搜索算法(DFS,Depth First Search)詳解

    PHP實(shí)現(xiàn)深度優(yōu)先搜索算法(DFS,Depth First Search)詳解

    這篇文章主要介紹了PHP實(shí)現(xiàn)深度優(yōu)先搜索算法(DFS,Depth First Search),簡單分析了深度優(yōu)先搜索算法的原理并結(jié)合具體實(shí)例給出了php實(shí)現(xiàn)深度優(yōu)先搜索的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • php中foreach遍歷類對象的總結(jié)

    php中foreach遍歷類對象的總結(jié)

    這篇文章主要介紹了php中foreach遍歷類對象的總結(jié),對foreach感興趣的同學(xué),可以參考下
    2021-04-04
  • php7 錯(cuò)誤處理機(jī)制修改實(shí)例分析

    php7 錯(cuò)誤處理機(jī)制修改實(shí)例分析

    這篇文章主要介紹了php7 錯(cuò)誤處理機(jī)制修改,結(jié)合實(shí)例形式分析了php7 錯(cuò)誤處理機(jī)制修改相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-05-05

最新評論

兴安盟| 九龙坡区| 娱乐| 东阿县| 兴业县| 泗阳县| 米脂县| 三明市| 晴隆县| 清水县| 宽甸| 安国市| SHOW| 且末县| 收藏| 应用必备| 哈尔滨市| 呼图壁县| 祁连县| 贵阳市| 湖口县| 繁昌县| 安新县| 贵港市| 洛南县| 海口市| 惠水县| 尖扎县| 民勤县| 洪湖市| 文登市| 兰考县| 清苑县| 龙州县| 外汇| 怀宁县| 丹寨县| 宝山区| 定安县| 海盐县| 澄迈县|