❶ php數組從大到小排序誰幫忙想下感謝
你好,建議使用冒泡排序法,這樣看上去比較清楚明了,你這樣編寫就比較復雜了。
❷ php數組排序有很多的方法,哪位可以詳細的分解一二嗎,如用函數和不用函數。
在php數組排序中我們通常會用到下列幾個函數。
sort() ------ 以升序對數組排序,是以元素值來排序的
rsort() ----- 以降序對數組排序,以元素值來排序。
asort() ----- 根據值,以升序對關聯數組進行排序
ksort() ----- 根據鍵,以升序對關聯數組進行排序
arsort() ---- 根據值,以降序對關聯數組進行排序
krsort() ---- 根據鍵,以降序對關聯數組進行排序
array_multisort()----對多個數組或多維數組進行排序
用sort函數來做下示例吧
<?php
$string=array("Yes","True","False");
sort($string);
print_r($string);
?>
運行結果為:Array ( [0] => False [1] => True [2] => Yes )
再來看一個array_multisort的例子了,
<?php
$att[] = array('name' => 'cat', 'number' => 2);
$att[] = array('name' => 'dog', 'number' => 1);
$att[] = array('name' => 'dgg', 'number' => 6);
$att[] = array('name' => 'monkey', 'number' => 2);
$att[] = array('name' => 'bear', 'number' => 6);
$att[] = array('name' => 'bee', 'number' => 7);
array_multisort($att,SORT_DESC,SORT_REGULAR);
print_r($att);
?>
輸出結果為:
Array (
[0] => Array ( [name] => monkey [number] => 2 )
[1] => Array ( [name] => dog [number] => 1 )
[2] => Array ( [name] => dgg [number] => 6 )
[3] => Array ( [name] => cat [number] => 2 )
[4] => Array ( [name] => bee [number] => 7 )
[5] => Array ( [name] => bear [number] => 6 )
)
不用數組的來個例子了。
<?php
$att[] = array('name' => 'cat', 'number' => 2);
$att[] = array('name' => 'dog', 'number' => 1);
$att[] = array('name' => 'dgg', 'number' => 6);
$att[] = array('name' => 'monkey', 'number' => 2);
$att[] = array('name' => 'bear', 'number' => 6);
$att[] = array('name' => 'bee', 'number' => 7);
for($i=0;$i<count($att);$i++){
foreach($att as $key=>$val){
if($att[$i]['number']>$val['number']){
$att[$key]=$att[$i];
$att[$i]=$val;
}
}
}
print_r($att);
?>
結果:
Array (
[0] => Array ( [name] => bee [number] => 7 )
[1] => Array ( [name] => bear [number] => 6 )
[2] => Array ( [name] => dgg [number] => 6 )
[3] => Array ( [name] => cat [number] => 2 )
[4] => Array ( [name] => monkey [number] => 2 )
[5] => Array ( [name] => dog [number] => 1 )
)
當然還有更多的方法,如插入排序,選擇排序,冒泡排序,快速排序等。這些網站有很多的,如這個網站上就有:http://www.weberlove.com/PHPjishu/phpjichu/2015/0429/289.html至於數組和字元串的話,主要有str_split()、explode(),preg_split()三個函數。當然還有別的方法,上面那個網我站有說到,你可以自己去找一找了。
❸ 如何使用PHP排序key為字母+數字的數組
<?php
$fruits=array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
arsort($fruits);
foreach($fruitsas$key=>$val){
echo"$key=$val ";
}
?>
輸出結果(正序排序):
a=orange
d=lemon
b=banana
c=apple
<?php
$fruits=array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
asort($fruits);
foreach($fruitsas$key=>$val){
echo"$key=$val ";
}
?>
輸出結果(倒序排序):
c=apple
b=banana
d=lemon
a=orange
❹ php如何按數組鍵值排序
$arr=[
array(
'name'=>'小壞龍',
'age'=>28
),
array(
'name'=>'小壞龍2',
'age'=>14
),
array(
'name'=>'小壞龍3',
'age'=>59
),
array(
'name'=>'小壞龍4',
'age'=>23
),
array(
'name'=>'小壞龍5',
'age'=>23
),
array(
'name'=>'小壞龍6',
'age'=>21
),
];
array_multisort(array_column($arr,'age'),SORT_DESC,$arr);
print_r($arr);
其中 array_column(數組,數組中的某個鍵值) 從多維數組中取出某個鍵值的一列 返回一個一維數組;
array_multisort(數組(一維數組),排序方式(SOTR_ASC,SOTR_DESC),其他數組(可以是二維的)
❺ 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);
* mp($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實現數組按指定KEY排序的方法
本文實例講述了php實現數組按指定KEY排序的方法。分享給大家供大家參考。具體實現方法如下:
function
array_sort($arr,$keys,$orderby='asc'){
$keysvalue
=
$new_array
=
array();
foreach
($arr
as
$k=>$v){
$keysvalue[$k]
=
$v[$keys];
}
if($orderby==
'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
foreach
($keysvalue
as
$k=>$v){
$new_array[]
=
$arr[$k];
}
return
$new_array;
}
希望本文所述對大家的php程序設計有所幫助。
❼ php數組隨機排序幾種方法
它的用法也很簡單:array_rand($arr[, $num])$arr == 用來取元素的數組$num == 隨機取下標的個數其中第二個參數 $num 是可選的,默認為1 。注意:它的返回值在第二個參數大於 1 的時候是一個數組;當第二個參數不設或者傳值 1 的時候是一個下標。簡單的示例代碼如下:1、第二個參數不傳值的情況;$arr = Array('a', 'b');$rndKey = array_rand($arr);echo $arr[$rndKey];//輸出 a 或者 b2、第二個參數傳值大於 1 的情況;$arr = Array('a', 'b', 'c', 'd');$rndKey = array_rand($arr, 2);print_r($rndKey]);//輸出一個隨機key的數組
❽ 在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 數組重新排序 數字鍵名key
print_r(array_values($arr));
❿ php數組隨機排序幾種方法
它的用法也很簡單:array_rand($arr[,
$num])$arr
==
用來取元素的數組$num
==
隨機取下標的個數其中第二個參數
$num
是可選的,默認為1
。注意:它的返回值在第二個參數大於
1
的時候是一個數組;當第二個參數不設或者傳值
1
的時候是一個下標。簡單的示例代碼如下:1、第二個參數不傳值的情況;$arr
=
Array('a',
'b');$rndKey
=
array_rand($arr);echo
$arr[$rndKey];//輸出
a
或者
b2、第二個參數傳值大於
1
的情況;$arr
=
Array('a',
'b',
'c',
'd');$rndKey
=
array_rand($arr,
2);print_r($rndKey]);//輸出一個隨機key的數組