php數組排序二維數組排序(下面哪些是PHP數組排序的方法)

本文目錄一覽:

php 根據某個欄位對二維數組這個數組排序

試編寫代碼如下:

?php

$array[] = array(‘id’=1,’price’=50);

$array[] = array(‘id’=2,’price’=70);

$array[] = array(‘id’=3,’price’=30);

$array[] = array(‘id’=4,’price’=20);

foreach ($array as $key=$value){

$id[$key] = $value[‘id’];

$price[$key] = $value[‘price’];

}

array_multisort($price,SORT_NUMERIC,SORT_DESC,$id,SORT_STRING,SORT_ASC,$array);

echo ‘pre’;

print_r($array);

echo ‘/pre’;

?

運行結果:

Array

(

[0] = Array

(

[id] = 2

[price] = 70

)

[1] = Array

(

[id] = 1

[price] = 50

)

[2] = Array

(

[id] = 3

[price] = 30

)

[3] = Array

(

[id] = 4

[price] = 20

)

)

PHP中怎麼根據二維數組中的子數組的某個元素進行排序

//先用array_column 多維數組按照縱向(列)取出

$date = array_column($arr, ‘0’);

//上面得到的結果:array()

//再用array_multisort 結合array_column得到的結果對$arr進行排序

array_multisort($date,SORT_ASC,$arr);

如何對PHP二維數組根據第二維某鍵值去重和排序

1 需要排序的數組如下:

$array = array(

array(‘name’=’手機’,’brand’=’諾基亞’,’price’=1050),

array(‘name’=’筆記本電腦’,’brand’=’lenovo’,’price’=4300),

array(‘name’=’剃鬚刀’,’brand’=’飛利浦’,’price’=3100),

array(‘name’=’跑步機’,’brand’=’三和松石’,’price’=4900),

array(‘name’=’手錶’,’brand’=’卡西歐’,’price’=960),

array(‘name’=’液晶電視’,’brand’=’索尼’,’price’=6299),

array(‘name’=’激光印表機’,’brand’=’惠普’,’price’=1200)

);

2 排序的函數:

function arr_sort($array,$key,$order=”asc”){//asc是升序 desc是降序

$arr_nums=$arr=array();

foreach($array as $k=$v){

$arr_nums[$k]=$v[$key];

}

if($order==’asc’){

asort($arr_nums);

}else{

arsort($arr_nums);

}

foreach($arr_nums as $k=$v){

$arr[$k]=$array[$k];

}

return $arr;

}

3 調用方式:

arr_sort($array,’price’);

PHP數組排序array_multisort函數詳細用法跟排序方法是怎樣的?

一、先看最簡單的情況。有兩個數組:

$arr1 = array(1,9,5);

$arr2 = array(6,2,4);

array_multisort($arr1,$arr2);

print_r($arr1); // 得到的順序是1,5,9

print_r($arr2); // 得到的順序是6,4,2

我估計兩個數組的值自始至終都是對應著的:1對應6,9對應2,5對應4。

我們再加多一個數組看看會怎樣:

$arr1 = array(1,9,5);

$arr2 = array(6,2,4);

$arr3 = array(3,7,8);

array_multisort($arr1,$arr2,$arr3);

查看結果,1自始至終都對應6對應3,其它項也是如此。這種對應關係就是手冊中所謂的「排序時保留原有的鍵名關聯」。

另外也可以把每個數組想像成資料庫表的一列。而對應著的1,6,3為一數據行,9,2,7為另一數據行。。。

array_multisort會先按第一個數組(想像成列)排序,如果第一個數組(列)的值相同,則按第二個數組(列)排序。

具體可以用下面的程式來測試:

$arr1 = array(1,9,5,9);

$arr2 = array(6,2,4,1);

$arr3 = array(3,7,8,0);

array_multisort($arr1,$arr2,$arr3);

可以想像這裡$arr3的結果是(3,8,0,7)。

二、接下來講解array_multisort的參數。這個函數的參數很靈活。最簡單的情況是如上面所示的以1個或n個數組作為參數,需要注意的是每個數組的項數要一樣,否則會warning導致排序失效。

像這樣array_multisort($arr1,$arr2,$arr3); 默認是所有數組都是升序排列,如果想對$arr2降序,併當作字元串去比較,就要寫成:

array_multisort($arr1, $arr2, SORT_DESC, SORT_STRING, $arr3);

每個array後面可以跟一個排序順序標誌或一個排序類型標誌,或者兩種標誌同時出現。但是每種排序標誌在每個數組後面只能出現一個。

詳細如下:

排序順序標誌:

SORT_ASC – 按照上升順序排序(默認)

SORT_DESC – 按照下降順序排序

排序類型標誌:

SORT_REGULAR – 將項目按照通常方法比較(默認)

SORT_NUMERIC – 將項目按照數值比較

SORT_STRING – 將項目按照字元串比較

三、最後是array_multisort有什麼實際作用。

我們通常有一些多維數組需要排序:

$guys = Array

(

[0] = Array

(

[name] = jake

[score] = 80

[grade] = A

)

[1] = Array

(

[name] = jin

[score] = 70

[grade] = A

)

[2] = Array

(

[name] = john

[score] = 80

[grade] = A

)

[3] = Array

(

[name] = ben

[score] = 20

[grade] = B

)

)

例如我們想按成績倒序排列,如果成績相同就按名字的升序排列。

這時我們就需要根據$guys的順序多弄兩個數組出來:

$scores = array(80,70,80,20);

$names = array(‘jake’,’jin’,’john’,’ben’);

然後

array_multisort($scores, SORT_DESC, $names, $guys);就行了

還能不能更靈活一點呢,每次想排序都要另外弄些數組出來嗎?

其實在qeephp的helper_array類裡面已經封裝得很好,下面是它的兩個方法,需要的人自己修改一下就可以用了:

/**

* 根據指定的鍵對數組排序

*

* 用法:

* @code php

* $rows = array(

* array(‘id’ = 1, ‘value’ = ‘1-1’, ‘parent’ = 1),

* array(‘id’ = 2, ‘value’ = ‘2-1’, ‘parent’ = 1),

* array(‘id’ = 3, ‘value’ = ‘3-1’, ‘parent’ = 1),

* array(‘id’ = 4, ‘value’ = ‘4-1’, ‘parent’ = 2),

* array(‘id’ = 5, ‘value’ = ‘5-1’, ‘parent’ = 2),

* array(‘id’ = 6, ‘value’ = ‘6-1’, ‘parent’ = 3),

* );

*

* $rows = Helper_Array::sortByCol($rows, ‘id’, SORT_DESC);

* dump($rows);

* // 輸出結果為:

* // array(

* // array(‘id’ = 6, ‘value’ = ‘6-1’, ‘parent’ = 3),

* // array(‘id’ = 5, ‘value’ = ‘5-1’, ‘parent’ = 2),

* // array(‘id’ = 4, ‘value’ = ‘4-1’, ‘parent’ = 2),

* // array(‘id’ = 3, ‘value’ = ‘3-1’, ‘parent’ = 1),

* // array(‘id’ = 2, ‘value’ = ‘2-1’, ‘parent’ = 1),

* // array(‘id’ = 1, ‘value’ = ‘1-1’, ‘parent’ = 1),

* // )

* @endcode

*

* @param array $array 要排序的數組

* @param string $keyname 排序的鍵

* @param int $dir 排序方向

*

* @return array 排序後的數組

*/

static function sortByCol($array, $keyname, $dir = SORT_ASC)

{

return self::sortByMultiCols($array, array($keyname = $dir));

}

/**

* 將一個二維數組按照多個列進行排序,類似 SQL 語句中的 ORDER BY

*

* 用法:

* @code php

* $rows = Helper_Array::sortByMultiCols($rows, array(

* ‘parent’ = SORT_ASC,

* ‘name’ = SORT_DESC,

* ));

* @endcode

*

* @param array $rowset 要排序的數組

* @param array $args 排序的鍵

*

* @return array 排序後的數組

*/

static function sortByMultiCols($rowset, $args)

{

$sortArray = array();

$sortRule = ”;

foreach ($args as $sortField = $sortDir)

{

foreach ($rowset as $offset = $row)

{

$sortArray[$sortField][$offset] = $row[$sortField];

}

$sortRule .= ‘$sortArray[\” . $sortField . ‘\’], ‘ . $sortDir . ‘, ‘;

}

if (empty($sortArray) || empty($sortRule)) { return $rowset; }

eval(‘array_multisort(‘ . $sortRule . ‘$rowset);’);

return $rowset;

}

php二維數組自定義排序

function pSort($arr)

{

$TimeSort = array();

foreach ($arr as $key = $value) {

$TimeSort[$key] = $value[‘age’];

}

asort($TimeSort);

$data = array();

foreach ($TimeSort as $key = $value) {

$data[] = $arr[$key];

}

$i = 0;

foreach ($arr as $k = $v) {

$arr[$k] = $data[$i];

$i++;

}

return $arr;

}

主要部分,你也可以考慮用那個多為數組排序的那個函數,上面這個是我前幾天自己寫的,不知道在你這能用不

php二維數組排序

$ary=array(array(“ID”=21,”name”=”kitty”),array(“ID”=22,”name”=”sony”),array(“ID”=17,”name”=”picker”));

for($i=0; $icount($ary) ;$i++){

for($j=0; $j$i; $j++){

if($ary[$i][‘ID’] $ary[$j][‘ID’]){

$temp = $ary[$i][‘ID’];

$ary[$i][‘ID’] = $ary[$j][‘ID’];

$ary[$j][‘ID’] = $temp;

}

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301015.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-29 14:19
下一篇 2024-12-29 14:19

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有著廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進位的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進位。 一、AES加密介紹 AE…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29

發表回復

登錄後才能評論