很多站长朋友们都不太清楚php根据元素排序,今天小编就来给大家整理php根据元素排序,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php数组对象元素排序问题 2、 php使用函数asort和ksort对数组元素排序 3、 php数组函数序列之sort() 对数组的元素值进行升序排序 4、 php二维数组中按某个元素的值排序 5、 PHP中怎么根据二维数组中的子数组的某个元素进行排序 6、 PHP实现常见的排序算法 php数组对象元素排序问题$fruits =array( 0 => array( 'id' => 1, 'type' => '普通发票', 'weight' => 1, 'is_start' => 1), 1 => array( 'id' => 2, 'type' => '增值税专用发票', 'weight' => 2, 'is_start' => 1), 2 => array( 'id' => 3, 'type' => '收据', 'weight' => 0, 'is_start' => 1), 3 => array( 'id' => 4, 'type' => '测试', 'weight' => 4, 'is_start' => 0) ); var_dump($fruits); function compare($x,$y) { if($x['weight'] == $y['weight']) return 0; elseif($x['weight'] < $y['weight']) return -1; else return 1; } usort($fruits,"compare"); echo $fruits[0]['id']."<br />"; echo $fruits[1]['id']."<br />"; echo $fruits[2]['id']."<br />"; echo $fruits[3]['id']."<br />";
php使用函数asort和ksort对数组元素排序不知道你是怎么写的,是少了个planet1,不过不用它也行,就用这个2就可以了,还有就是数组那块分割用逗号,别用分号,语句结束用分号.下面是我改的.自己看吧..
<?php
$planet2=array(
'X'=>'Earth',
'Y'=>'Venus',
'Z'=>'Mars',
'A'=>'Jupiter',
'B'=>'Saturn',
);
asort($planet2);
echo
'使用函数asort对数组元素排序:';
echo
'<br/>';
foreach($planet2
as
$key
=>
$value)
{
echo
'planet2['.$key.']='.$value;
echo
'<br/>';
echo
'<br/>';
}
echo
'<br/>';
echo
'使用函数ksort对数组元素排序:';
echo
'<br/>';
ksort($planet2);
foreach($planet2
as
$key=>$value)
{
echo
'planet2['.$key.']='.$value;
echo
'<br/>';
echo
'<br/>';
}
?>
php数组函数序列之sort() 对数组的元素值进行升序排序sort()定义和用法
sort()
函数按升序对给定数组的值排序。
注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。
如果成功则返回
TRUE,否则返回
FALSE。
语法
sort(array,sorttype)参数
描述
array
必需。输入的数组。
sorttype
可选。规定如何排列数组的值。可能的值:
SORT_REGULAR
-
默认。以它们原来的类型进行处理(不改变类型)。
SORT_NUMERIC
-
把值作为数字来处理
SORT_STRING
-
把值作为字符串来处理
SORT_LOCALE_STRING
-
把值作为字符串来处理,基于本地设置*。
*:该值是
PHP
4.4.0
和
5.0.2
新加的。在
PHP
6
之前,使用了系统的区域设置,可以用
setlocale()
来改变。自
PHP
6
起,必须用
i18n_loc_set_default()
函数。
例子
复制代码
代码如下:
<?php
$my_array
=
array("a"
=>
"Dog",
"b"
=>
"Cat",
"c"
=>
"Horse");
sort($my_array);
print_r($my_array);
?>
输出:
Array
(
0]
=>
Cat
[1]
=>
Dog
[2]
=>
Horse
)
php二维数组中按某个元素的值排序//提供一个方法
class lib_BaseUtils{
static $s_field;
static $s_sc;
/**
* php 二维数组按键值排序
* @param array $a 需要排序的数组
* @param string $sort 排序的键值
* @param string $d 默认ASC,带上参后为DESC
* @return boolean
*/
static function array_sort($a, $sort, $d='') {
self::$s_field = $sort;
self::$s_sc = $d;
usort($a, array("lib_BaseUtils","array_sort_callback"));
return $a;
}
//排序回调方法 请勿删除
static function array_sort_callback($a, $b) {
$s_a = self::$s_sc ? $b : $a;
$s_b = self::$s_sc ? $a : $b;
$field = self::$s_field;
switch (true){
case (is_string($s_a[$field]) is_string($s_b[$field])):
return strcmp($s_a[$field], $s_b[$field]);
break;
default:
if($s_a[$field]== $s_b[$field]){
return 0;
}else{
return $s_a[$field]>$s_b[$field]?-1:1;
}
}
}
}
调用方法
lib_BaseUtils::array_sort($lists, 'app_down','desc');
PHP中怎么根据二维数组中的子数组的某个元素进行排序//先用array_column 多维数组按照纵向(列)取出
$date = array_column($arr, '0');
//上面得到的结果:array()
//再用array_multisort 结合array_column得到的结果对$arr进行排序
array_multisort($date,SORT_ASC,$arr);
PHP实现常见的排序算法注:为方便描述,下面的排序全为正序(从小到大排序)
假设有一个数组[a,b,c,d]
冒泡排序依次比较相邻的两个元素,如果前面的元素大于后面的元素,则两元素交换位置;否则,位置不变。具体步骤:
1,比较a,b这两个元素,如果a>b,则交换位置,数组变为:[b,a,c,d]
2,比较a,c这两个元素,如果a<c,则位置不变,数组变为:[b,a,c,d]
3,比较c,d这两个元素,如果c>d,则交换位置,数组变为:[b,a,d,c]
完成第一轮比较后,可以发现最大的数c已经排(冒)在最后面了,接着再进行第二轮比较,但第二轮比较不必比较最后一个元素了,因为最后一个元素已经是最大的了。
第二轮比较结束后,第二大的数也会冒到倒数第二的位置。
依次类推,再进行第三轮,,,
就这样最大的数一直往后排(冒),最后完成排序。所以我们称这种排序算法为冒泡排序。
选择排序是一种直观的算法,每一轮会选出列中最小的值,把最小值排到前面。具体步骤如下:
插入排序步骤大致如下:
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。
步骤:
从数列中挑出一个元素,称为 “基准”(pivot),
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
关于php根据元素排序的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php根据元素排序 php数组排序的函数有哪些的详细内容...