我正在使用PHP。我有一个有1-256项的阵列。这是一个例子:
$arr[] = "(1.) Ben";
$arr[] = "Albert";
$arr[] = "Bill";
$arr[] = "(2.) Paul";
$arr[] = "(5.) Martin";
$arr[] = "(12.) Mike";
$arr[] = "(20.) John";
问题1:
我想按名称按字母顺序排列这些项目。所以,结果应该是这样的:
Albert
(1.) Ben
Bill
(20.) John
(5.) Martin
(12.) Mike
(2.) Paul
问题2:
我也想按照这样的方式订购1)数字和2)名称:
(1.) Ben
(2.) Paul
(5.) Martin
(12.) Mike
(20.) John
Albert
Bill
我怎么能用PHP做这个工作?
答案 0 :(得分:0)
php得到了排序函数:asort()按值排序,ksort()按键排序。
asort($arr); // now sorted by value.
ksort($arr); // now sorted by key.
答案 1 :(得分:0)
它为Question 1
排序:
<?php
$arr[] = "(1.) Ben";
$arr[] = "Albert";
$arr[] = "Bill";
$arr[] = "(2.) Paul";
$arr[] = "(5.) Martin";
$arr[] = "(12.) Mike";
$arr[] = "(20.) John";
usort($arr, function($a, $b){
$a = explode(' ', $a, 2);
$a = (count($a) > 1) ? $a[1] : $a[0];
$b = explode(' ', $b, 2);
$b = (count($b) > 1) ? $b[1] : $b[0];
return strcmp($a, $b);
});
print_r($arr); // // Print array sorted for 'Question 1'
<强> @EDIT 强>
并为Question 2
排序:
$arr[] = "(1.) Ben";
$arr[] = "Albert";
$arr[] = "Bill";
$arr[] = "(2.) Paul";
$arr[] = "(5.) Martin";
$arr[] = "(12.) Mike";
$arr[] = "(20.) John";
usort($arr, function($a, $b){
$a = explode(' ', $a, 2);
$b = explode(' ', $b, 2);
if(count($a) > 1 && count($b) > 1)
{
$a = str_replace(['(', ')', '.'], '', $a[0]);
$b = str_replace(['(', ')', '.'], '', $b[0]);
return $a > $b;
}
else
{
return strcmp($a[0], $b[0]);
}
});
print_r($arr); // Print array sorted for 'Question 2'
答案 2 :(得分:0)
当您使用索引数组时,您可以通过asort()函数按字母顺序排序,但对于另一个问题,您必须创建一个函数,即。您想要排序然后应用uasort()函数的顺序。链接是php.net/manual/en/functions.uasort.php检查以上链接你可能会明白