成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

php查詢(xún)數(shù)據(jù)排序 php 排序函數(shù)

PHP查詢(xún)并排序

從你要輸出的結(jié)果來(lái)看,你這樣實(shí)現(xiàn)法不太科學(xué),代碼不高效,數(shù)據(jù)量少時(shí)還算說(shuō)得過(guò)去,若上萬(wàn)數(shù)據(jù)的話,服務(wù)器會(huì)崩潰。建議你在數(shù)據(jù)庫(kù)結(jié)構(gòu)上進(jìn)行改進(jìn),對(duì)于排序的字段設(shè)計(jì)可以采用人為可控制的數(shù)值,這樣你要實(shí)現(xiàn)的話,一個(gè)sql語(yǔ)句搞定到數(shù)組后,你想輸出哪種格式都是可以的了。你去參考下那些知名的CMS系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)構(gòu),我想你會(huì)受到啟發(fā)的。

創(chuàng)新互聯(lián)公司專(zhuān)注于企業(yè)成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)、網(wǎng)站重做改版、皋蘭網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為皋蘭等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

記得給分?。?!

php連接mysql數(shù)據(jù)庫(kù),執(zhí)行查詢(xún)語(yǔ)句后,排序后再輸出

select?*?from?table?order?by?id?desc

查詢(xún)?所有?來(lái)自?table表?排序?按照?id?降序,desc?代表降序,asc?代表升序

PHP數(shù)組排序 array_multisort函數(shù)詳細(xì)用法跟排序方法

一、先看最簡(jiǎn)單的情況。有兩個(gè)數(shù)組:

$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

我估計(jì)兩個(gè)數(shù)組的值自始至終都是對(duì)應(yīng)著的:1對(duì)應(yīng)6,9對(duì)應(yīng)2,5對(duì)應(yīng)4。

我們?cè)偌佣嘁粋€(gè)數(shù)組看看會(huì)怎樣:

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

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

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

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

查看結(jié)果,1自始至終都對(duì)應(yīng)6對(duì)應(yīng)3,其它項(xiàng)也是如此。這種對(duì)應(yīng)關(guān)系就是手冊(cè)中所謂的“排序時(shí)保留原有的鍵名關(guān)聯(lián)”。

另外也可以把每個(gè)數(shù)組想像成數(shù)據(jù)庫(kù)表的一列。而對(duì)應(yīng)著的1,6,3為一數(shù)據(jù)行,9,2,7為另一數(shù)據(jù)行。。。

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

具體可以用下面的程式來(lái)測(cè)試:

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

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

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

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

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

二、接下來(lái)講解array_multisort的參數(shù)。這個(gè)函數(shù)的參數(shù)很靈活。最簡(jiǎn)單的情況是如上面所示的以1個(gè)或n個(gè)數(shù)組作為參數(shù),需要注意的是每個(gè)數(shù)組的項(xiàng)數(shù)要一樣,否則會(huì)warning導(dǎo)致排序失效。

像這樣array_multisort($arr1,$arr2,$arr3); 默認(rèn)是所有數(shù)組都是升序排列,如果想對(duì)$arr2降序,并當(dāng)作字符串去比較,就要寫(xiě)成:

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

每個(gè)array后面可以跟一個(gè)排序順序標(biāo)志或一個(gè)排序類(lèi)型標(biāo)志,或者兩種標(biāo)志同時(shí)出現(xiàn)。但是每種排序標(biāo)志在每個(gè)數(shù)組后面只能出現(xiàn)一個(gè)。

詳細(xì)如下:

排序順序標(biāo)志:

SORT_ASC - 按照上升順序排序(默認(rèn))

SORT_DESC - 按照下降順序排序

排序類(lèi)型標(biāo)志:

SORT_REGULAR - 將項(xiàng)目按照通常方法比較(默認(rèn))

SORT_NUMERIC - 將項(xiàng)目按照數(shù)值比較

SORT_STRING - 將項(xiàng)目按照字符串比較

三、最后是array_multisort有什么實(shí)際作用。

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

$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

)

)

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

這時(shí)我們就需要根據(jù)$guys的順序多弄兩個(gè)數(shù)組出來(lái):

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

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

然后

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

還能不能更靈活一點(diǎn)呢,每次想排序都要另外弄些數(shù)組出來(lái)嗎?

其實(shí)在qeephp的helper_array類(lèi)里面已經(jīng)封裝得很好,下面是它的兩個(gè)方法,需要的人自己修改一下就可以用了:

/**

* 根據(jù)指定的鍵對(duì)數(shù)組排序

*

* 用法:

* @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);

* // 輸出結(jié)果為:

* // 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 要排序的數(shù)組

* @param string $keyname 排序的鍵

* @param int $dir 排序方向

*

* @return array 排序后的數(shù)組

*/

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

{

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

}

/**

* 將一個(gè)二維數(shù)組按照多個(gè)列進(jìn)行排序,類(lèi)似 SQL 語(yǔ)句中的 ORDER BY

*

* 用法:

* @code php

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

* 'parent' = SORT_ASC,

* 'name' = SORT_DESC,

* ));

* @endcode

*

* @param array $rowset 要排序的數(shù)組

* @param array $args 排序的鍵

*

* @return array 排序后的數(shù)組

*/

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;

}

網(wǎng)站題目:php查詢(xún)數(shù)據(jù)排序 php 排序函數(shù)
標(biāo)題來(lái)源:http://jinyejixie.com/article40/ddispho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、品牌網(wǎng)站建設(shè)靜態(tài)網(wǎng)站、用戶(hù)體驗(yàn)定制開(kāi)發(fā)、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
商水县| 龙门县| 南京市| 西宁市| 宁波市| 信丰县| 内黄县| 泸水县| 武定县| 横山县| 县级市| 西安市| 靖安县| 普兰店市| 奈曼旗| 华亭县| 惠来县| 靖宇县| 堆龙德庆县| 青神县| 桦川县| 阆中市| 岢岚县| 潢川县| 墨脱县| 南投市| 辽宁省| 南昌市| 仪陇县| 扎囊县| 台中县| 乳源| 桃园市| 任丘市| 明水县| 新建县| 建宁县| 沾化县| 炎陵县| 青田县| 抚顺市|