談?wù)勱P(guān)于PHP數(shù)組合并技巧
我們在使用PHP數(shù)組的時(shí)候可能遇到PHP數(shù)組合并的問題,文章這里介紹了PHP數(shù)組合并、PHP數(shù)組的排序。PHP數(shù)組排序?qū)嶋H上就是將PHP數(shù)組進(jìn)行排序。在1995年 中,PHP2.0發(fā)布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對(duì)mSQL的支持,從此建立了PHP在動(dòng)態(tài)網(wǎng)頁開發(fā)上的地位。
#T#到了1996年底,有15000個(gè)網(wǎng)站使用 PHP/FI;時(shí)間到了1997年中,使用PHP/FI的網(wǎng)站數(shù)字超過五萬個(gè)。而在1997年中,開始了第三版的開發(fā)計(jì)劃,開發(fā)小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。在本文中也就是對(duì)數(shù)據(jù)庫查詢出來的結(jié)果集進(jìn)行排序。數(shù)據(jù)庫查詢結(jié)果有時(shí)候不能直接使用,比如mysql等用in語句出來的結(jié)果,因此需要對(duì)結(jié)果進(jìn)行某種方式的排序。這時(shí)候就需要進(jìn)行PHP數(shù)組排序了。對(duì)數(shù)據(jù)庫結(jié)果進(jìn)行排序請看下面的示例:本例中data 數(shù)組中的每個(gè)單元表示一個(gè)表中的一行。這是典型的數(shù)據(jù)庫存放數(shù)組數(shù)據(jù)的方式。例子中的數(shù)據(jù)如下:
- volume | edition
- -------+--------
- 67 | 2
- 86 | 1
- 85 | 6
- 98 | 2
- 86 | 6
- 67 | 7
數(shù)據(jù)全都存放在名為 data 的數(shù)組中。這通常是通過循環(huán)從數(shù)據(jù)庫取得的結(jié)果,例如 mysql_fetch_assoc()(實(shí)際上這個(gè)函數(shù)你可以和mysql_fetch_assoc()函數(shù)看成一樣,具體的差別你可以看PHP的手冊里面關(guān)于key的差別)。
- $data[] = array('volume' => 67, 'edition' => 2);
- $data[] = array('volume' => 86, 'edition' => 1);
- $data[] = array('volume' => 85, 'edition' => 6);
- $data[] = array('volume' => 98, 'edition' => 2);
- $data[] = array('volume' => 86, 'edition' => 6);
- $data[] = array('volume' => 67, 'edition' => 7);
本例中將把 volume 降序排列,把 edition 升序排列。
現(xiàn)在有了包含有行的數(shù)組,但是 array_multisort() 需要一個(gè)包含列的數(shù)組,因此用以下代碼來取得列,然后排序。
- // 取得列的列表
- foreach ($data as $key => $row) {
- $volume[$key] = $row['volume'];
- $edition[$key] = $row['edition'];
- }
- // 將數(shù)據(jù)根據(jù) volume 降序排列,根據(jù) edition 升序排列
- // 把 $data 作為最后一個(gè)參數(shù),以通用鍵排序
- array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
PHP數(shù)組合并在排好序了,結(jié)果如下:
- volume | edition
- -------+--------
- 98 | 2
- 86 | 1
- 86 | 6
- 85 | 6
- 67 | 2
- 67 | 7
實(shí)際上真正在排序的時(shí)候還有很多方法可以使用,比如php的array數(shù)組自帶的 arsort(),asort(),ksort(),krsort(),natsort(),natcasesort(),rsort(),usort(),array_multisort() 和 uksort()。