詳解PHP 二維陣列排序保持鍵名不變

2022-09-26 06:24:08 字數 1984 閱讀 2539

<?ph 程式設計客棧p

$data = a

1001 => array(

'age' => 22,

'name' => '鳩摩智'

), 1007 => array(

'age' => 21,

'name' => '慕容復'

), 1004 => array(

'age' => 27,

'name' => '喬幫主'

));//根據欄位age對陣列$dwww.cppcns.comata進行公升序排列

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

array_multisort($ages, sort_asc, $data);

print_r($data);

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

我們再看個示例:

$data = array(

1001 => array(

'age' => 22,

'name' => '鳩摩智'

), 1007 => array(

'age' => 21,

'name' => '慕容復'

), 1004 => array(

'age' => 27,

'name' =oslhkc> '喬幫主'

));//根據欄位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')

if ($type == 'asc')

if ($type == 'desc')

foreach ($keysvalue as $k => $v)

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')

$type == 'asc' ? asort($keysvalue) : arsort($keysvalue);

foreach ($keysvalue as $k => $v)

return $new_array;

}從上面的結果我們看到:

鍵名保持了不變,實現的原理很簡單,先取出鍵名,然後對鍵名排序,再根據對應的鍵名賦值組成新陣列返回。

大家可以看到,這裡我們主要用到了php的幾個核心的排序函式

asort() 對關聯陣列按照鍵值進行公升序排序。

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

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

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

本文標題: 詳解php 二維陣列排序保持鍵名不變

本文位址:

PHP 二維陣列排序保持鍵名不變

對二維陣列指定的鍵名排序,首先大家想到的是array multisort函式,關於array multisort的用法我之前也寫了一篇 廢話不多言,我們看個例項 data array 1001 array age 22,name 鳩摩智 1007 array age 21,name 慕容復 1004...

PHP二維陣列按元素的某個鍵名排序

dbattr array 1 array goods attr id 359,goods id 60,attr id 3 2 array goods attr id 360,goods id 60,attr id 4 3 array goods attr id 366,goods id 60,att...

PHP二維陣列去重(指定鍵名)

本例對二維陣列中某個指定鍵名進行去重,發現網上大多使用array unique或是foreach遍歷等方式去重,效果不佳且較為繁瑣。本文以二維陣列去重為引,介紹array column函式的三種用法。以下是本人常用的去重方法 以指定欄位為索引,自然會把索引欄位中重複的值覆蓋掉,然後在去除關聯索引就可...