本文目錄一覽:
- 1、php 多維數組鍵值重新排序
- 2、PHP使用array_multisort對多個數組或多維數組進行排序
- 3、用PHP編寫程序 有一個數組$arr=array(4,3,8,9,2),將其按從小到大的順序重新排序
- 4、PHP數組重新排序
php 多維數組鍵值重新排序
$a
=
array(2=array(1,2,3,4),6=array(6,2,3,5),1=array(1,4,53));
$b
=
array_values($a);//返回數組中的所有值,形成新的數組,建立數字索引
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開發者給我們提供了更好的辦法,我們就可以省去不必要的麻煩了。
用PHP編寫程序 有一個數組$arr=array(4,3,8,9,2),將其按從小到大的順序重新排序
?php
$array=array(4,3,8,9,2);
sort($array);
echo “標準排序\n”;
for($i=0;$icount($array);$i++){
echo $array[$i];
}
natsort($array);
echo “\n自然排序\n”;
for($i=0;$icount($array);$i++){
echo $array[$i];
}
?
結果如下:
標準排序 23489 自然排序 23489
PHP數組重新排序
array_multisort 對多個數組或多維數組進行排序 排序的依據可以是自定義,完全可以用一個一維數組去排序多維數組.
$arrSort = [];
foreach($arr as $info) {
$arrSort[] = $info[‘o’];
}
sort($arrSort);
array_multisort($arrSort, $arr);
array_multisort
你研究一下.這個是完全可行的.
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257108.html