phpvalue排序
① php如何從多個數組中取出value最大的值
先說一下思路
1. 用PHP函數排序
sort() - 以升序對數組排序
rsort() - 以降序對數組排序
asort() - 根據值,以升序對關聯數組進行排序
ksort() - 根據鍵,以升序對關聯數組進行排序
arsort() - 根據值,以降序對關聯數組進行排序
krsort() - 根據鍵,以降序對關聯數組進行排序
案例:
2. 自己編寫函數取出數組中的兩個數值比較,取大的跟後一個數值比較,直到結束
② php 怎麼根據數組中其中的一個值排序
sort() - 以升序對數組排序
rsort() - 以降序對數組排序
asort() - 根據值,以升序對關聯數組進行排序
ksort() - 根據鍵,以升序對關聯數組進行排序
arsort() - 根據值,以降序對關聯數組進行排序
krsort() - 根據鍵,以降序對關聯數組進行排序
③ php幾種排序演算法實例詳解
下面給你介紹四種排序方法:
1) 插入排序(Insertion Sort)的基本思想是:
每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子文件中的適當位置,直到全部記錄插入完成為止。實現代碼如下:
④ 在php中怎麼排序鍵值數組
array_change_key_case -- 返回字元串鍵名全為小寫或大寫的數組
array_chunk -- 將一個數組分割成多個
array_combine -- 創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值
array_count_values -- 統計數組中所有的值出現的次數
array_diff_assoc -- 帶索引檢查計算數組的差集
array_diff_uassoc -- Computes the difference of arrays with additional index check which is performed by a user supplied callback function.
array_diff -- 計算數組的差集
array_fill -- 用給定的值填充數組
array_filter -- 用回調函數過濾數組中的單元
array_flip -- 交換數組中的鍵和值
array_intersect_assoc -- 帶索引檢查計算數組的交集
array_intersect -- 計算數組的交集
array_key_exists -- 檢查給定的鍵名或索引是否存在於數組中
array_keys -- 返回數組中所有的鍵名
array_map -- 將回調函數作用到給定數組的單元上
array_merge_recursive -- 遞歸地合並兩個或多個數組
array_merge -- 合並兩個或多個數組
array_multisort -- 對多個數組或多維數組進行排序
array_pad -- 用值將數組填補到指定長度
array_pop -- 將數組最後一個單元彈出(出棧)
array_push -- 將一個或多個單元壓入數組的末尾(入棧)
array_rand -- 從數組中隨機取出一個或多個單元
array_rece -- 用回調函數迭代地將數組簡化為單一的值
array_reverse -- 返回一個單元順序相反的數組
array_search -- 在數組中搜索給定的值,如果成功則返回相應的鍵名
array_shift -- 將數組開頭的單元移出數組
array_slice -- 從數組中取出一段
array_splice -- 把數組中的一部分去掉並用其它值取代
array_sum -- 計算數組中所有值的和
array_udiff_assoc -- Computes the difference of arrays with additional index check. The data is compared by using a callback function.
array_udiff_uassoc -- Computes the difference of arrays with additional index check. The data is compared by using a callback function. The index check is done by a callback function also
array_udiff -- Computes the difference of arrays by using a callback function for data comparison.
array_unique -- 移除數組中重復的值
array_unshift -- 在數組開頭插入一個或多個單元
array_values -- 返回數組中所有的值
array_walk -- 對數組中的每個成員應用用戶函數
array -- 新建一個數組
arsort -- 對數組進行逆向排序並保持索引關系
asort -- 對數組進行排序並保持索引關系
compact -- 建立一個數組,包括變數名和它們的值
count -- 統計變數中的單元數目
current -- 返回數組中的當前單元
each -- 返回數組中當前的鍵/值對並將數組指針向前移動一步
end -- 將數組的內部指針指向最後一個單元
extract -- 從數組中將變數導入到當前的符號表
in_array -- 檢查數組中是否存在某個值
key -- 從結合數組中取得鍵名
krsort -- 對數組按照鍵名逆向排序
ksort -- 對數組按照鍵名排序
list -- 把數組中的值賦給一些變數
natcasesort -- 用「自然排序」演算法對數組進行不區分大小寫字母的排序
natsort -- 用「自然排序」演算法對數組排序
next -- 將數組中的內部指針向前移動一位
pos -- 得到數組當前的單元
prev -- 將數組的內部指針倒回一位
range -- 建立一個包含指定范圍單元的數組
reset -- 將數組的內部指針指向第一個單元
rsort -- 對數組逆向排序
shuffle -- 將數組打亂
sizeof -- count() 的別名
sort -- 對數組排序
uasort -- 使用用戶自定義的比較函數對數組中的值進行排序並保持索引關聯
uksort -- 使用用戶自定義的比較函數對數組中的鍵名進行排序
usort -- 使用用戶自定義的比較函數對數組中的值進行排序
⑤ 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)
⑥ 如何使用強大的PHP函數對數組進行排序
如果你已經使用了一段時間PHP的話,那麼,你應該已經對它的數組比較熟悉了——這種數據結構允許你在單個變數中存儲多個值,並且可以把它們作為一個集合進行操作。
經常,開發人員發現在PHP中使用這種數據結構對值或者數組元素進行排序非常有用。PHP提供了一些適合多種數組的排序函數,這些函數允許你在數組內部對元素進行排列,也允許用很多不同的方法對它們進行重新排序。在這篇文章中我們將討論該排序中最重要的幾個函數。
簡單排序
首先,讓我們來看看最簡單的情況:將一個數組元素從低到高進行簡單排序,這個函數既可以按數字大小排列也可以按字母順序排列。PHP的sort()函數實現了這個功能,如Listing A所示:
Listing A
<?php
 $data = array(5,8,1,7,2);
 sort($data);
 print_r($data);
 ?>
輸出結果如下所示:
Array ([0] => 1
[1] => 2
[2] => 5
[3] => 7
[4] => 8
)
也能使用rsort()函數進行排序,它的結果與前面所使用的sort()簡單排序結果相反。Rsort()函數對數組元素進行從高到低的倒排,同樣可以按數字大小排列也可以按字母順序排列。Listing B給我們展示了它的一個例子:
Listing B
<?php $data = array(5,8,1,7,2);rsort($data); print_r($data);
?>
它的輸出結果如下:
Array ([0] => 8
[1] => 7
[2] => 5
[3] => 2
[4] => 1
)
根據關鍵字排序
當我們使用數組的時候,經常根據關鍵字對數組重新排序,從高到低。Ksort()函數就是根據關鍵字進行排序的函數,同時,它在排序的過程中會保持關鍵字的相關性。Listing C就是一個例子:
Listing C
<?php $data = array("US" => "United States", "IN" => "India", "DE" => "Germany", "ES" => "Spain");ksort($data); print_r($data);
?>
它的輸出結果如下:
Array ([DE] => Germany
[ES] => Spain
[IN] => India
[US] => United States
)
Krsort()函數是根據關鍵字對數組進行倒排,Listing D就是這樣的例子:
Listing D
<?php $data = array("US" => "United States", "IN" => "India", "DE" => "Germany", "ES" => "Spain");krsort($data); print_r($data);
?>
它的輸出結果如下:
Array ([US] => United States
[IN] => India
[ES] => Spain
[DE] => Germany
)
根據值排序
如果你想使用值排序來取代關鍵字排序的話,PHP也能滿足你的要求。你只要使用asort()函數來代替先前提到的ksort()函數就可以了。如Listing E所示:
Listing E
<?php $data = array("US" => "United States", "IN" => "India", "DE" => "Germany", "ES" => "Spain");asort($data); print_r($data);
?>
下面就是它的輸出結果。請注意這個結果與上面使用ksort()函數所得到的結果的不同——在這兩種情況中,都是按字母順序進行排序的,但是它們是根據數組的不同欄位進行排序的。
同時,請注意關鍵字-值之間的聯系會始終保持;它只是關鍵字-值對排序後的一種方式,排序並不會改變它們的對應關系。
Array ([DE] => Germany
[IN] => India
[ES] => Spain
[US] => United States
)
現在,你肯定能猜到這種排序也可以進行倒排,它使用arsort()函數完成這個功能。Listing F就是一個例子:
Listing F
<?php $data = array("US" => "United States", "IN" => "India", "DE" => "Germany", "ES" => "Spain");arsort($data); print_r($data);
?>
下面是它的輸出結果,根據值按字母表順序進行倒排。將下面的結果與用krsort()函數進行倒排後生成的結果進行比較,就能很容易明白兩者的不同了。
Array ([US] => United States
[ES] => Spain
[IN] => India
[DE] => Germany
)
自然語言排序
PHP有一個非常獨特的排序方式,這種方式使用認知而不是使用計算規則。這種特性稱為自然語言排序,當創建模糊邏輯應用軟體的時候這種排序方式非常有用。下面大家可以來看看它的一個簡單例子,如Listing G所示:
Listing G
<?php $data = array("book-1", "book-10", "book-100", "book-5"); sort($data);print_r($data);
natsort($data); print_r($data);?>
它的輸出結果如下:
Array ([0] => book-1
[1] => book-10
[2] => book-100
[3] => book-5
)
Array
(
[0] => book-1
[3] => book-5
[1] => book-10
[2] => book-100
)
它們的不同已經很清楚了:第二個排序結果更直觀,更「人性化」,然而第一個則更符合演算法規則,更具「計算機」特點。
自然語言能進行倒排嗎?答案是肯定的!只要對natsort()的結果使用array_reverse()函數就可以了,Listing H就是一個簡單例子:
Listing H
<?php $data = array("book-1", "book-10", "book-100", "book-5");natsort($data); print_r(array_reverse($data));
?>
下面是它的輸出結果:
Array ([0] => book-100
[1] => book-10
[2] => book-5
[3] => book-1
)
根據用戶自定義的規則排序
PHP也能讓你定義自己的排序演算法,你可以通過創建你自己的比較函數,並把它傳遞給usort()函數。如果第一個參數比第二個參數「小」的話,比較函數必須返回一個比0小的數,如果第一參數比第二個參數「大」的話,比較函數應該返回一個比0大的數。
Listing I就是這樣的一個例子,在這個例子中根據它們的長度對數組元素進行排序,最短的項放在最前面:
Listing I
<?php $data = array("[email protected]", "[email protected]", "[email protected]", "[email protected]");usort($data, 'sortByLen');
print_r($data); function sortByLen($a, $b) {
if (strlen($a) == strlen($b)) {
return 0;
} else {
return (strlen($a) > strlen($b)) ? 1 : -1;
}
}
?>
這樣,就創建了我們自己的比較函數,這個函數使用strlen()函數比較每一個字元串的個數,然後分別返回1,0或-1.這個返回值是決定元素排列的基礎。下面是它的輸出結果:
Array ([0] => [email protected]
[1] => [email protected]
[2] => [email protected]
[3] => [email protected]
)
自然語言排序
PHP有一個非常獨特的排序方式,這種方式使用認知而不是使用計算規則。這種特性稱為自然語言排序,當創建模糊邏輯應用軟體的時候這種排序方式非常有用。下面大家可以來看看它的一個簡單例子,如Listing G所示:
Listing G
<?php $data = array("book-1", "book-10", "book-100", "book-5"); sort($data);print_r($data);
natsort($data); print_r($data);?>
它的輸出結果如下:
Array ([0] => book-1
[1] => book-10
[2] => book-100
[3] => book-5
)
Array
(
[0] => book-1
[3] => book-5
[1] => book-10
[2] => book-100
)
它們的不同已經很清楚了:第二個排序結果更直觀,更「人性化」,然而第一個則更符合演算法規則,更具「計算機」特點。
自然語言能進行倒排嗎?答案是肯定的!只要對natsort()的結果使用array_reverse()函數就可以了,Listing H就是一個簡單例子:
Listing H
<?php $data = array("book-1", "book-10", "book-100", "book-5");natsort($data); print_r(array_reverse($data));
?>
下面是它的輸出結果:
Array ([0] => book-100
[1] => book-10
[2] => book-5
[3] => book-1
)
根據用戶自定義的規則排序
PHP也能讓你定義自己的排序演算法,你可以通過創建你自己的比較函數,並把它傳遞給usort()函數。如果第一個參數比第二個參數「小」的話,比較函數必須返回一個比0小的數,如果第一參數比第二個參數「大」的話,比較函數應該返回一個比0大的數。
Listing I就是這樣的一個例子,在這個例子中根據它們的長度對數組元素進行排序,最短的項放在最前面:
Listing I
<?php $data = array("[email protected]", "[email protected]", "[email protected]", "[email protected]");usort($data, 'sortByLen');
print_r($data); function sortByLen($a, $b) {
if (strlen($a) == strlen($b)) {
return 0;
} else {
return (strlen($a) > strlen($b)) ? 1 : -1;
}
}
?>
這樣,就創建了我們自己的比較函數,這個函數使用strlen()函數比較每一個字元串的個數,然後分別返回1,0或-1.這個返回值是決定元素排列的基礎。下面是它的輸出結果:
Array ([0] => [email protected]
[1] => [email protected]
[2] => [email protected]
[3] => [email protected]
)
多維排序
最後,PHP也允許在多維數組上執行一些比較復雜的排序——例如,首先對一個嵌套數組使用一個普通的關鍵字進行排序,然後再根據另一個關鍵字進行排序。這與使用SQL的ORDER BY語句對多個欄位進行排序非常相似。為了能更好的明白它是如何工作的,請仔細看Listing J所舉的例子:
Listing J
<?php $data = array(array("id" => 1, "name" => "Boney M", "rating" => 3),
array("id" => 2, "name" => "Take That", "rating" => 1),
array("id" => 3, "name" => "The Killers", "rating" => 4),
array("id" => 4, "name" => "Lusain", "rating" => 3),
); foreach ($data as $key => $value) {
$name[$key] = $value['name'];
$rating[$key] = $value['rating'];
}
array_multisort($rating, $name, $data); print_r($data);?>
這里,我們在$data數組中模擬了一個行和列數組。然後,我使用array_multisort()函數對數據集合進行重排,首先是根據rating進行排序,然後,如果rating相等的話,再根據name排序。它的輸出結果如下:
Array ([0] => Array
(
[id] => 2
[name] => Take That
[rating] => 1
) [1] => Array
(
[id] => 1
[name] => Boney M
[rating] => 3
)
[2] => Array
(
[id] => 4
[name] => Lusain
[rating] => 3
)
[3] => Array
(
[id] => 3
[name] => The Killers
[rating] => 4
)
)
array_multisort()函數是PHP中最有用的函數之一,它有非常廣泛的應用范圍。另外,就如你在例子中所看到的,它能對多個不相關的數組進行排序,也可以使用其中的一個元素作為下次排序的基礎,還可以對資料庫結果集進行排序。
這些例子應該讓你對PHP中各種數組排序函數的使用有了初步的了解,也向你展示了一些隱藏在PHP數組處理工具包的內部功能。
最後,祝你能愉快的使用這些功能!
⑦ php 2維數組按照值排序
太多了。冒泡,隨便找了個。
$a = Array
(
'0' => Array
(
'count' => '1000',
'memid'=> '33',
'nickname' => 'ks',
'province' => '四川',
'city' => '阿壩藏族羌族自治州',
'county' => '阿壩縣',
'level' => '',
'memheader' =>''
),
'1' => Array
(
'count' => '8',
'memid' => '32',
'nickname' => 'ks',
'province' => '甘肅',
'city' => '白銀',
'county' => '白銀市',
'level' => '',
'memheader' => ''
),
'2' => Array
(
'count' => '800',
'memid' => '31',
'nickname' => '[email protected]',
'province' => '新疆',
'city' => '阿拉爾',
'county' => '阿拉爾市',
'level' => '',
'memheader' => ''
)
);
function array2sort($a,$sort,$d='') {
$num=count($a);
if(!$d){
for($i=0;$i<$num;$i++){
for($j=0;$j<$num-1;$j++){
if($a[$j][$sort] > $a[$j+1][$sort]){
foreach ($a[$j] as $key=>$temp){
$t=$a[$j+1][$key];
$a[$j+1][$key]=$a[$j][$key];
$a[$j][$key]=$t;
}
}
}
}
}
else{
for($i=0;$i<$num;$i++){
for($j=0;$j<$num-1;$j++){
if($a[$j][$sort] < $a[$j+1][$sort]){
foreach ($a[$j] as $key=>$temp){
$t=$a[$j+1][$key];
$a[$j+1][$key]=$a[$j][$key];
$a[$j][$key]=$t;
}
}
}
}
}
return $a;
}
$a = array2sort($a,'count');
echo '<pre>';
print_r($a);
echo '</pre>';
分給我吧
⑧ PHP一個數組要求先按值排序,如果它的值有相同,就再按鍵排序。
最簡單的方法就是先把歌手名(漢字)用php轉換成拼音,然後order
by排序就可以了,有一個pinyin類,可以去網上找找看,帝國CMS裡面也有,可以拷出來用。
⑨ php怎麼根據數組中其中的一個值排序
$newArr=array();
for($j=0;$j<count($arr);$j++){
$newArr[]=$arr[$j]['flag']
}
array_multisort($newArr,$arr);
print_r($arr)