phpsort降序,sort函數如何降序

本文目錄一覽:

PHP求助,有二維數組如下,我想要他按照num降序排,改怎麼寫?

$a = array(

array(

‘id’=1,

‘num’=501

),

array(

‘id’=3,

‘num’=5651

),

array(

‘id’=5,

‘num’=145

),

);

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

$num[] = $v[‘num’];

}

array_multisort($num,SORT_DESC,$a);

print_r($a);

在php中如何對一個數組進行升序和降序排列?

升序:sort()函數

降序:rsort()函數

?php

$people=array(‘name’,’sex’,’nation’,’birth’);

foreach ($people as $mychrs)

echo $mychrs.” “;

sort($people);

echo “br /—排序後—br /”;

foreach ($people as $mychrs)

echo $mychrs.” “;

?

PHP中除了升序函數以外,還有降序或稱反向排列的函數,就是rsort()函數,比如:

$num1=range(1,9);

rsort($num1);

這裡其實就相當於range(9,1)

sort是升序還是降序

sort默認是是升序,如果需要降序排序,可以另外自己編一個比較函數。可以也可以實現降序排序,或者多關鍵字的排序,都是可以的。

PHP編寫降序?

你可以找到這個查詢的sql在where條件後面加一個ORDER BY ID DESC

也可以使用PHP方法

$arrUsers = array(

array(

‘id’ = 1,

‘name’ = ‘張三’,

‘age’ = 25,

),

array(

‘id’ = 2,

‘name’ = ‘李四’,

‘age’ = 23,

),

array(

‘id’ = 3,

‘name’ = ‘王五’,

‘age’ = 40,

),

array(

‘id’ = 4,

‘name’ = ‘趙六’,

‘age’ = 31,

),

array(

‘id’ = 5,

‘name’ = ‘黃七’,

‘age’ = 20,

),

);

$sort = array(

‘direction’ = ‘SORT_DESC’, //排序順序標誌 SORT_DESC 降序;SORT_ASC 升序

‘field’ = ‘age’, //排序字段

);

$arrSort = array();

foreach($arrUsers AS $uniqid = $row){

foreach($row AS $key=$value){

$arrSort[$key][$uniqid] = $value;

}

}

if($sort[‘direction’]){

array_multisort($arrSort[$sort[‘field’]], constant($sort[‘direction’]), $arrUsers);

}

var_dump($arrUsers);

php 怎麼根據數組中其中的一個值排序

sort() – 以升序對數組排序

rsort() – 以降序對數組排序

asort() – 根據值,以升序對關聯數組進行排序

ksort() – 根據鍵,以升序對關聯數組進行排序

arsort() – 根據值,以降序對關聯數組進行排序

krsort() – 根據鍵,以降序對關聯數組進行排序

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;

}

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

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

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • 分段函數Python

    本文將從以下幾個方面詳細闡述Python中的分段函數,包括函數基本定義、調用示例、圖像繪製、函數優化和應用實例。 一、函數基本定義 分段函數又稱為條件函數,指一條直線段或曲線段,由…

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29

發表回復

登錄後才能評論