您好,欢迎访问一九零五行业门户网

一些php数组排序函数示例总结_PHP教程

在php中数组排序有很多函数可以实现的,如果是简单的一维数组排序我们可以使用php 自带的排序函数了,但多维数组时我们需要自己写了。
回来后一直在揪心啊,于是翻了一下书本查阅,给我知道了答案。为了记住它们,我决定来一个数组排序函数大总结。
首先接触的就是php数组排序、降序的排序问题。
sort:本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
rsort:本函数对数组进行逆向排序(最高到最低)。 删除原有的键名而不仅是重新排序。
asort:对数组进行排序并保持索引关系
arsort:对数组进行逆向排序并保持索引关系
ksort:对数组按照键名排序,保留键名到数据的关联
krsort:对数组按照键名逆向排序,保留键名到数据的关联
natsort:对字母数字字符串进行排序并保持原有键/值的关联
natcasesort:同natsort排序算法,但不区分大小写字母排序
php 数组排序(sort)
数字索引数组排序:
函数:sort(array, [sort type])
说明:sort()函数按升序对指定数组(第一个参数)进行排序。
sort函数第二参数作用为指定排序类型,是可选参数,可能的值为:
sort_regular: 默认值,不改变类型进行排序;
sort_numeric: 把值作为数字进行排序;
sort_string: 把值作为字符串进行排序;
如数组中有4和”37″,按数字排序,4小于”37″;按字符串排序,4大于”37″;
一、一维数组
假设有一个一维数组,如下:
$sortarr = array(name=>hiro, age=>23, city=>shanghai, code=>200051);
print_r()输出的原始数组结果为:
array ( [name] => hiro [age] => 23 [city] => shanghai [code] => 200051 )
1.sort()函数:根据数组下标进行升序排列;
print_r()输出的数组结果为(输出时只有数组下标,而不是键名):
1
 array ( [0] => 23 [1] => 200051 [2] => shanghai [3] => hiro )
2.rsort()函数:与sort()函数相反,根据数组下标进行降序排列;
print_r()输出的数组结果为(输出时只有数组下标,而不是键名):
array ( [0] => hiro [1] => shanghai [2] => 200051 [3] => 23 )
3.asort()函数:根据数组的键名进行升序排列;
print_r()输出的数组结果为:
1
 array ( [age] => 23 [code] => 200051 [city] => shanghai [name] => hiro )
4.arsort()函数:与asort()函数相反,根据数组的键名进行降序排列;
print_r()输出的数组结果为:
array ( [name] => hiro [city] => shanghai [code] => 200051 [age] => 23 )
5.ksort()函数:根据数组的键值进行升序排列;
print_r()输出的数组结果为:
array ( [age] => 23 [city] => shanghai [code] => 200051 [name] => hiro )
6.krsort()函数:与ksort()函数相反,根据数组的键值进行降序排列;
print_r()输出的数组结果为:
 代码如下 复制代码
array ( [name] => hiro [city] => shanghai [code] => 200051 [age] => 23 )
7.reverse_array()函数:反向当前的数组排列顺序;
print_r()输出的数组结果为:
代码如下 复制代码
 array ( [name] => hiro [age] => 23 [city] => shanghai [code] => 200051 )
8.shuffle()函数:随机地排列数组顺序(每次刷新后排列的顺序都不相同);
print_r()输出的数组结果为(只是其中一种随机排列):
array ( [0] => 23 [1] => 200051 [2] => shanghai [3] => hiro )
二、二维数组
假设有一个二维数组,如下:
 代码如下 复制代码
 $person = array(
 array(hiro, 23, suzhou),
 array(yoyo, 25, shanghai),
 array(janstar, 28, xinjiang)
);
print_r()输出的原始数组结果为:
1
 array ( [0] => array ( [0] => hiro [1] => 23 [2] => suzhou ) [1] => array ( [0] => yoyo [1] => 25 [2] => shanghai ) [2] => array ( [0] => janstar [1] => 28 [2] => xinjiang ) )
二维数组的排序是根据每维的键名排序的,所以需要额外地编写比较函数。先举三个例子:
1.按每维的第一个元素升序排列,代码如下:
 代码如下 复制代码
function compare0($x, $y) {
 if($x[0] == $t[0]) {
  return 0;
 } elseif ($x[0]   return -1;
 } else {
  return 1;
 }
}
usort($person, compare0);
echo 按第一个元素正向排序:;
print_r($person);
输出的结果如下:
1
 按第一个元素正向排序:array ( [0] => array ( [0] => hiro [1] => 23 [2] => suzhou ) [1] => array ( [0] => janstar [1] => 28 [2] => xinjiang ) [2] => array ( [0] => yoyo [1] => 25 [2] => shanghai ) )
2.按每维的第三个元素升序排列,代码如下:
 代码如下 复制代码
function compare2($x, $y) {
 if($x[2] == $t[2]) {
  return 0;
 } elseif ($x[2]   return -1;
 } else {
  return 1;
 }
}
usort($person, compare2);
echo 按第三个元素正向排序:;
print_r($person);
输出的结果如下:
按第三个元素正向排序:array ( [0] => array ( [0] => yoyo [1] => 25 [2] => shanghai ) [1] => array ( [0] => hiro [1] => 23 [2] => suzhou ) [2] => array ( [0] => janstar [1] => 28 [2] => xinjiang ) )
3.按每维的第三个元素升序排列,代码如下:
 代码如下 复制代码
function reverse_compare2($x, $y) {
 if($x[2] == $t[2]) {
  return 0;
 } elseif ($x[2]   return 1; //改变后即可反向
 } else {
  return -1; //改变后即可反向
 }
}
usort($person, reverse_compare2);
echo 按第三个元素反向排序:;
print_r($person);
输出的结果如下:
1
 按第三个元素反向排序:
 代码如下 复制代码
array ( [0] => array ( [0] => janstar [1] => 28 [2] => xinjiang ) [1] => array ( [0] => hiro [1] => 23 [2] => suzhou ) [2] => array ( [0] => yoyo [1] => 25 [2] => shanghai ) )
呵呵,是不是代码多了点,记下了以后方便查阅啊!

 代码如下 复制代码
0);
    return $result;
}
$array = array(100, 1000, 1, 10000);
//$array = sortarray($array, 0);
$array = sortarray($array, 1);
foreach($array as $a) {
    echo $a ;
}
?>
http://www.bkjia.com/phpjc/631245.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/631245.htmltecharticle在php中数组排序有很多函数可以实现的,如果是简单的一维数组排序我们可以使用php 自带的排序函数了,但多维数组时我们需要自己写了。...
其它类似信息

推荐信息