激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 詳解PHP 二維數組排序保持鍵名不變

詳解PHP 二維數組排序保持鍵名不變

2019-06-05 11:11周伯通的麥田服務器之家 PHP教程

這篇文章主要介紹了如何保持PHP 二維數組排序鍵名不變,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

對二維數組指定的鍵名排序,首先大家想到的是array_multisort函數,關于array_multisort的用法我之前也寫了一篇廢話不多言,我們看個實例:

<?php
$data = array(
 1001 => array(
 'age' => 22,
 'name' => '鳩摩智'
 ),
 1007 => array(
 'age' => 21,
 'name' => '慕容復'
 ),
 1004 => array(
 'age' => 27,
 'name' => '喬幫主'
 )
);
//根據字段age對數組$data進行升序排列 

$ages = array_column($data, 'age'); 

array_multisort($ages, SORT_ASC, $data); 

print_r($data);

詳解PHP 二維數組排序保持鍵名不變

細心的朋友會看到,鍵名重置了,鍵名從0開始,顯然這可能不是我們想要的結果,那如何保持鍵名不變?
我們再看個示例:

$data = array(
 1001 => array(
 'age' => 22,
 'name' => '鳩摩智'
 ),
 1007 => array(
 'age' => 21,
 'name' => '慕容復'
 ),
 1004 => array(
 'age' => 27,
 'name' => '喬幫主'
 )
);
//根據字段age對數組$data進行降序排列
$data = arraySort($data, "age", "desc" );
print_r($data);

/**
 * @desc arraySort php二維數組排序 按照指定的key 對數組進行自然排序
 * @param array $arr 將要排序的數組
 * @param string $keys 指定排序的key
 * @param string $type 排序類型 asc | desc
 * @return array
 */
function arraySort($arr, $keys, $type = 'asc')
{
 $keysvalue = $new_array = array();
 foreach ($arr as $k => $v) {
 $keysvalue[$k] = $v[$keys];
 }

 if ($type == 'asc') {
 natsort($keysvalue);
 }
 if ($type == 'desc') {
 natsort($keysvalue);
 $keysvalue = array_reverse($keysvalue, TRUE); // 將原數組中的元素順序翻轉,如果第二個參數指定為 true,則元素的鍵名保持不變
 }
 foreach ($keysvalue as $k => $v) {
 $new_array[$k] = $arr[$k];
 }
 return $new_array;
}

這里我們也可以精簡下arraySort函數,處理結果相同:

/**
 * @desc arraySort php二維數組排序 按照指定的key 對數組進行自然排序
 * @param array $arr 將要排序的數組
 * @param string $keys 指定排序的key
 * @param string $type 排序類型 asc | desc
 * @return array
 */
function arraySort($arr, $keys, $type = 'asc')
{
 $keysvalue = $new_array = array();
 foreach ($arr as $k => $v) {
 $keysvalue[$k] = $v[$keys];
 }

 $type == 'asc' ? asort($keysvalue) : arsort($keysvalue);
 foreach ($keysvalue as $k => $v) {
 $new_array[$k] = $arr[$k];
 }
 return $new_array;
}

從上面的結果我們看到:

詳解PHP 二維數組排序保持鍵名不變

鍵名保持了不變,實現的原理很簡單,先取出鍵名,然后對鍵名排序,再根據對應的鍵名賦值組成新數組返回。
大家可以看到,這里我們主要用到了php的幾個核心的排序函數

asort() 對關聯數組按照鍵值進行升序排序。

arsort()對關聯數組按照鍵值進行降序排序。

natsort() 實現了“自然排序”,即數字從 1 到 9 的排序方法,字母從 a 到 z 的排序方法,短的優先。數組的索引與單元值保持關聯,

注意:在自然排序算法中,數字 2 小于 數字 10。在計算機排序算法中,10 小于 2,因為 "10" 中的第一個數字小于 2。

以上所述是小編給大家介紹的如何保持PHP 二維數組排序鍵名不變詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品性夜天天视频 | 一级黄色免费 | 免费嗨片首页中文字幕 | 免费一级欧美大片视频 | 性少妇chinesevideo | 欧美日韩在线影院 | 久久精品国产99久久6动漫亮点 | 91在线免费观看 | 粉嫩粉嫩一区二区三区在线播放 | 欧美另类69xxxxx 视频 | 久久久久久免费 | 中文字幕 日本 | 女人一级一级毛片 | 青草av.久久免费一区 | 国产在线中文 | 毛片视频免费观看 | 在线影院av | 你下面好大好硬好想要 | 深夜小视频在线观看 | 毛毛片在线看 | 国产成人精品免费视频大全最热 | 日本在线看片 | 国产成人网| 激情大乳女做爰办公室韩国 | 91九色视频观看 | 天天草天天干天天射 | www.99tv| 最新91在线视频 | 91精品久久香蕉国产线看观看 | 三人弄娇妻高潮3p视频 | av在线播放亚洲 | 国产色片| 欧美粗暴analvideos | 精品成人av一区二区三区 | 色综av| 综合网日日天干夜夜久久 | 亚洲午夜在线视频 | 日本免费不卡一区二区 | 99精品视频免费 | xxxeexxx性国产| 国产精品亚洲综合一区二区三区 |