❶ 求問php數組怎麼把key重新排序 有源代碼
sort()是對值進行排序,
如果是對key排序的話,可以用array_values(),就會默認從0開始
❷ PHP 對數組排序
function sort3wei($array){
foreach($array as $key=>$val){
$val_array= array();
$sort_array = array();
foreach($val as $k=>$v){
$val_array[] = $v;
$sort_array[] = $v['orders'];
}
sort($sort_array);
foreach($sort_array as $k=>$v){
$array[$key][$k] = $val_array[$k];
}
}
}
❸ PHP數組排序問題
//以下參考自PHP手冊array_multisort函數 Example #4 對資料庫結果進行排序
// 取得列的列表
//$data是你上面的數組,你的date_submitted列數據一樣,自己改改不一樣才能看出效果
foreach ($data as $key => $row) {
$volume[$key] = $row['date_submitted']; //這里date_submitted為排序列
}
// 將數據根據 date_submitted 降序排列
// 把 $data 作為最後一個參數,以通用鍵排序
array_multisort($volume, SORT_DESC, $data);
echo '<pre>';
var_mp($data);
❹ php 數組重新排序 數字鍵名key
print_r(array_values($arr));
❺ 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實現的自定義數組排序函數與排序類示例
本文實例講述了PHP實現的自定義數組排序函數與排序類。分享給大家供大家參考,具體如下:
/*
*
二維數組自定義排序函數
*
uasort($arr,function_name)
*
**/
$arr
=
array(
array('a'=>1,'b'=>'c'),
array('a'=>4,'b'=>'a'),
array('a'=>5,'b'=>'g'),
array('a'=>7,'b'=>'f'),
array('a'=>6,'b'=>'e')
);
function
compare_arr($x,$y){
if($x['b']<$y['b']){
return
-1;
}else
if($x['b']>$y['b']){
return
1;
}else{
return
0;
}
}
uasort($arr,'compare_arr');
foreach($arr
as
$a){
echo
$a['a'].'=>'.$a['b'].'<br/>';
}
手冊里的自定義排序類:
class
multiSort
{
var
$key;
//key
in
your
array
//排序函數
參數依次是
數組
待排列索引
排序類型
function
run
($myarray,
$key_to_sort,
$type_of_sort
=
'')
{
$this->key
=
$key_to_sort;
if
($type_of_sort
==
'desc')
uasort($myarray,
array($this,
'myreverse_compare'));
else
uasort($myarray,
array($this,
'mycompare'));
return
$myarray;
}
//正序
function
mycompare($x,
$y)
{
if
(
$x[$this->key]
==
$y[$this->key]
)
return
0;
else
if
(
$x[$this->key]
<
$y[$this->key]
)
return
-1;
else
return
1;
}
//逆序
function
myreverse_compare($x,
$y)
{
if
(
$x[$this->key]
==
$y[$this->key]
)
return
0;
else
if
(
$x[$this->key]
>
$y[$this->key]
)
return
-1;
else
return
1;
}
}
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP數組(Array)操作技巧大全》、《php排序演算法總結》、《php字元串(string)用法總結》、《PHP針對XML文件操作技巧總結》、《PHP錯誤與異常處理方法總結》、《PHP運算與運算符用法總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
❼ PHP數組排序函數合集 以及它們之間的聯系分析
下邊提到的幾個數組函數的排序有一些共性 數組被作為排序函數的參數 排序以後 數組本身就發生了改變 函數的返回值為bool類型 函數名中出現單a表示association 含義為 在按值排序的過程中 保持key=>value的對應關系不變 函數名中出現單k表示key 含義為 在按值排序的過程中按照數組key而不是數組的值排序 函數名中出現單r的表示reverse 含義為 按照跟不加r的相反的順序排列 函數名中出現單u的表示user defined 含義為 使用用戶自定義函數排序 如果函數的邏輯是參數 <參數 返回負數 則按照升序排列(p 小 返負升) sort函數升序排序
復制代碼 代碼如下: bool sort ( array &$array [ int $sort_flags= SORT_REGULAR ] ) <?php $fruits = array("lemon" "orange" "banana" "apple"); sort($fruits); var_mp($fruits); ?> 結果 array => string apple (length= ) => string banana (length= ) => string lemon (length= ) => string orange (length= )rsort降序排列
復制代碼 代碼如下: <?php $fruits = array("lemon" "orange" "banana" "apple"); rsort($fruits); var_mp($fruits); ?> 結果 array => string orange (length= ) => string lemon (length= ) => string banana (length= ) => string apple (length= )asort按照二維數組值的升序排列(保持key=>value的關聯關系)
復制代碼 代碼如下: <?php $fruits = array("d" => "lemon" "a" => "orange" "b" => "banana" "c" => "apple"); asort($fruits); var_mp($fruits); ?> 結果 array c => string apple (length= ) b => string banana (length= ) d => string lemon (length= ) a => string orange (length= )arsort按照二維數組值的降序排列(保持key=>value的關聯關系)
復制代碼 代碼如下: <?php $fruits = array("d" => "lemon" "a" => "orange" "b" => "banana" "c" => "apple"); arsort($fruits); var_mp($fruits); ?> 結果 array a => string orange (length= ) d => string lemon (length= ) b => string banana (length= ) c => string apple (length= )ksort按照數組的key升序排列
復制代碼 代碼如下: <?php $fruits = array("d"=>"lemon" "a"=>"orange" "b"=>"banana" "c"=>"apple"); ksort($fruits); var_mp($fruits); ?> 結果 array a => string orange (length= ) b => string banana (length= ) c => string apple (length= ) d => string lemon (length= )
krsort按照數組key的降序排列
復制代碼 代碼如下: <?php $fruits = array("d"=>"lemon" "a"=>"orange" "b"=>"banana" "c"=>"apple"); krsort($fruits); var_mp($fruits); ?> array d => string lemon (length= ) c => string apple (length= ) b => string banana (length= ) a => string orange (length= )usort函數按照用戶自定義的函數排序
復制代碼 代碼如下: <?php function cmp($a $b) { if ($a == $b) { return ; } return ($a < $b) ? : ; } $a = array( ); usort($a "cmp"); var_mp($a); ?>結果 array => int => int => int => int => int uksort使用自定義函數按照數組的key排序
復制代碼 代碼如下: <?php function cmp($a $b) { $a = preg_replace( @^(a|an|the) @ $a); $b = preg_replace( @^(a|an|the) @ $b); return strcasecmp($a $b); } $a = array("John" => "the Earth" => "an apple" => "a banana" => ); uksort($a "cmp"); var_mp($a); ?>結果 array an apple => int a banana => int the Earth => int John => int uasort將數組用自定義函數按照value排序 保持索引關系不變
復制代碼 代碼如下: <?php // Comparison function function cmp($a $b) { if ($a == $b) { return ; } return ($a < $b) ? : ; } // Array to be sorted $array = array( a => b => c => d => e => f => g => h => ); var_mp($array); // Sort and print the resulting array uasort($array cmp ); var_mp($array); ?>結果 array a => int b => int c => int d => int e => int f => int g => int h => int array d => int h => int c => int e => int g => int a => int f => int b => int array_multisort排序多個數組或多維數組
復制代碼 代碼如下: <?php $ar = array( array(" " "a") array( " " ) ); array_multisort($ar[ ] SORT_ASC SORT_STRING $ar[ ] SORT_NUMERIC SORT_DESC); var_mp($ar); ?>結果 array => array => string (length= ) => int => int => int => string a (length= ) => array => int => int => string (length= ) => int => int //說明 上例中 $ar數組優先按照$ar[ ]的字元串值升序排列 如果字元串值相等 再按照$ar[ ]數組的數字值降序排列 array_multisort函數的任意一個位置的參數如果是數組 表示排序時用的值 如果有多個數組參數 優先按照前邊的數組值進行排序 如果是常量 例如 SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING 表示排序方法(數組取值前優先) ========================================================================================== PHP二維數組排序函數 PHP一維數組的排序可以用sort() asort() arsort()等函數 但是PHP二維數組的排序需要自定義 以下函數是對一個給定的二維數組按照指定的鍵值進行排序 先看函數定義
復制代碼 代碼如下: function array_sort($arr $keys $type= asc ){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == asc ){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); foreach ($keysvalue as $k=>$v){ $new_array[$k] = $arr[$k]; } return $new_array; }它可以對二維數組按照指定的鍵值進行排序 也可以指定升序或降序排序法(默認為升序) 用法示例
復制代碼 代碼如下: $array = array( array( name => 手機 brand => 諾基亞 price => ) array( name => 筆記本電腦 brand => lenovo price => ) array( name => 剃須刀 brand => 飛利浦 price => ) array( name => 跑步機 brand => 三和松石 price => ) array( name => 手錶 brand => 卡西歐 price => ) array( name => 液晶電視 brand => 索尼 price => ) array( name => 激光列印機 brand => 惠普 price => ) ); $ShoppingList = array_sort($array price ); print_r($ShoppingList); lishixin/Article/program/PHP/201311/21145
❽ PHP使用array_multisort對多個數組或多維數組進行排序
PHP中array_multisort可以用來一次對多個數組進行排序,或者根據某一維或多維對多維數組進行排序。
關聯(string)鍵名保持不變,但數字鍵名會被重新索引。
輸入數組被當成一個表的列並以行來排序——這類似於
SQL
的
ORDER
BY
子句的功能。第一個數組是要排序的主要數組。數組中的行(值)比較為相同的話就按照下一個輸入數組中相應值的大小來排序,依此類推。——這句話是理解此函數用法的關鍵。
第一個參數必須是一個數組。接下來的每個參數可以是數組或者是下面列出的排序標志。
排序順序標志:
■SORT_ASC
-
按照上升順序排序
■SORT_DESC
-
按照下降順序排序
排序類型標志:
■SORT_REGULAR
-
將項目按照通常方法比較
■SORT_NUMERIC
-
將項目按照數值比較
■SORT_STRING
-
將項目按照字元串比較
每個數組之後不能指定兩個同類的排序標志。每個數組後指定的排序標志僅對該數組有效
-
在此之前為默認值
SORT_ASC
和
SORT_REGULAR。
看看兩個實際例子:
1、一次對多個數組進行排序:
復制代碼
代碼如下:
$num1
=
array(3,
5,
4,
3);
$num2
=
array(27,
50,
44,
78);
array_multisort($num1,
SORT_ASC,
$num2,
SORT_DESC);
print_r($num1);
print_r($num2);
//result:
Array
(
[0]
=>
3
[1]
=>
3
[2]
=>
4
[3]
=>
5
)
Array
(
[0]
=>
78
[1]
=>
27
[2]
=>
44
[3]
=>
50
)
2、對多維數組(以二位數組為例)進行排序:
復制代碼
代碼如下:
$arr
=
array(
'0'
=>
array(
'num1'
=>
3,
'num2'
=>
27
),
'1'
=>
array(
'num1'
=>
5,
'num2'
=>
50
),
'2'
=>
array(
'num1'
=>
4,
'num2'
=>
44
),
'3'
=>
array(
'num1'
=>
3,
'num2'
=>
78
)
);
foreach
(
$arr
as
$key
=>
$row
){
$num1[$key]
=
$row
['num1'];
$num2[$key]
=
$row
['num2'];
}
array_multisort($num1,
SORT_ASC,
$num2,
SORT_DESC,
$arr);
print_r($arr);
//result:Array([0]=>Array([num1]=>3
[num2]=>78)
[1]=>Array([num1]=>3
[num2]=>27)
[2]=>Array([num1]=>4
[num2]=>44)
[3]=>Array([num1]=>5
[num2]=>50))
總結:
這里的重點就是,先把要排序的key存到一個一維數組中,然後就可以使用array_multisort()這個函數,將數組按照key進行排序了,當然,這里的排序你完全可以不適用array_multisort()這個函數,僅僅通過foreach遍歷也能達到這個效果,但是既然php開發者給我們提供了更好的辦法,我們就可以省去不必要的麻煩了。