本文目录一览:
- 1、php数组排序有很多的方法,哪位可以详细的分解一二吗,如用函数和不用函数。
- 2、php如何按数组键值排序?
- 3、PHP数组排序
- 4、php如何根据数组中的键值进行排序
- 5、php 多维数组键值重新排序
php数组排序有很多的方法,哪位可以详细的分解一二吗,如用函数和不用函数。
在php数组排序中我们通常会用到下列几个函数。
sort() ------ 以升序对数组排序,是以元素值来排序的
rsort() ----- 以降序对数组排序,以元素值来排序。
asort() ----- 根据值,以升序对关联数组进行排序
ksort() ----- 根据键,以升序对关联数组进行排序
arsort() ---- 根据值,以降序对关联数组进行排序
krsort() ---- 根据键,以降序对关联数组进行排序
array_multisort()----对多个数组或多维数组进行排序
用sort函数来做下示例吧
?php
$string=array("Yes","True","False");
sort($string);
print_r($string);
?
运行结果为:Array ( [0] = False [1] = True [2] = Yes )
再来看一个array_multisort的例子了,
?php
$att[] = array('name' = 'cat', 'number' = 2);
$att[] = array('name' = 'dog', 'number' = 1);
$att[] = array('name' = 'dgg', 'number' = 6);
$att[] = array('name' = 'monkey', 'number' = 2);
$att[] = array('name' = 'bear', 'number' = 6);
$att[] = array('name' = 'bee', 'number' = 7);
array_multisort($att,SORT_DESC,SORT_REGULAR);
print_r($att);
?
输出结果为:
Array (
[0] = Array ( [name] = monkey [number] = 2 )
[1] = Array ( [name] = dog [number] = 1 )
[2] = Array ( [name] = dgg [number] = 6 )
[3] = Array ( [name] = cat [number] = 2 )
[4] = Array ( [name] = bee [number] = 7 )
[5] = Array ( [name] = bear [number] = 6 )
)
不用数组的来个例子了。
?php
$att[] = array('name' = 'cat', 'number' = 2);
$att[] = array('name' = 'dog', 'number' = 1);
$att[] = array('name' = 'dgg', 'number' = 6);
$att[] = array('name' = 'monkey', 'number' = 2);
$att[] = array('name' = 'bear', 'number' = 6);
$att[] = array('name' = 'bee', 'number' = 7);
for($i=0;$icount($att);$i++){
foreach($att as $key=$val){
if($att[$i]['number']$val['number']){
$att[$key]=$att[$i];
$att[$i]=$val;
}
}
}
print_r($att);
?
结果:
Array (
[0] = Array ( [name] = bee [number] = 7 )
[1] = Array ( [name] = bear [number] = 6 )
[2] = Array ( [name] = dgg [number] = 6 )
[3] = Array ( [name] = cat [number] = 2 )
[4] = Array ( [name] = monkey [number] = 2 )
[5] = Array ( [name] = dog [number] = 1 )
)
当然还有更多的方法,如插入排序,选择排序,冒泡排序,快速排序等。这些网站有很多的,如这个网站上就有:至于数组和字符串的话,主要有str_split()、explode(),preg_split()三个函数。当然还有别的方法,上面那个网我站有说到,你可以自己去找一找了。
php如何按数组键值排序?
array_change_key_case -- 返回字符串键名全为小写或大写的数组
array_chunk -- 将一个数组分割成多个
array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array_count_values -- 统计数组中所有的值出现的次数
array_diff_assoc -- 带索引检查计算数组的差集
array_diff_uassoc -- Computes the difference of arrays with additional index check which is performed by a user supplied callback function.
array_diff -- 计算数组的差集
array_fill -- 用给定的值填充数组
array_filter -- 用回调函数过滤数组中的单元
array_flip -- 交换数组中的键和值
array_intersect_assoc -- 带索引检查计算数组的交集
array_intersect -- 计算数组的交集
array_key_exists -- 检查给定的键名或索引是否存在于数组中
array_keys -- 返回数组中所有的键名
array_map -- 将回调函数作用到给定数组的单元上
array_merge_recursive -- 递归地合并两个或多个数组
array_merge -- 合并两个或多个数组
array_multisort -- 对多个数组或多维数组进行排序
array_pad -- 用值将数组填补到指定长度
array_pop -- 将数组最后一个单元弹出(出栈)
array_push -- 将一个或多个单元压入数组的末尾(入栈)
array_rand -- 从数组中随机取出一个或多个单元
array_reduce -- 用回调函数迭代地将数组简化为单一的值
array_reverse -- 返回一个单元顺序相反的数组
array_search -- 在数组中搜索给定的值,如果成功则返回相应的键名
array_shift -- 将数组开头的单元移出数组
array_slice -- 从数组中取出一段
array_splice -- 把数组中的一部分去掉并用其它值取代
array_sum -- 计算数组中所有值的和
array_udiff_assoc -- Computes the difference of arrays with additional index check. The data is compared by using a callback function.
array_udiff_uassoc -- Computes the difference of arrays with additional index check. The data is compared by using a callback function. The index check is done by a callback function also
array_udiff -- Computes the difference of arrays by using a callback function for data comparison.
array_unique -- 移除数组中重复的值
array_unshift -- 在数组开头插入一个或多个单元
array_values -- 返回数组中所有的值
array_walk -- 对数组中的每个成员应用用户函数
array -- 新建一个数组
arsort -- 对数组进行逆向排序并保持索引关系
asort -- 对数组进行排序并保持索引关系
compact -- 建立一个数组,包括变量名和它们的值
count -- 统计变量中的单元数目
current -- 返回数组中的当前单元
each -- 返回数组中当前的键/值对并将数组指针向前移动一步
end -- 将数组的内部指针指向最后一个单元
extract -- 从数组中将变量导入到当前的符号表
in_array -- 检查数组中是否存在某个值
key -- 从结合数组中取得键名
krsort -- 对数组按照键名逆向排序
ksort -- 对数组按照键名排序
list -- 把数组中的值赋给一些变量
natcasesort -- 用“自然排序”算法对数组进行不区分大小写字母的排序
natsort -- 用“自然排序”算法对数组排序
next -- 将数组中的内部指针向前移动一位
pos -- 得到数组当前的单元
prev -- 将数组的内部指针倒回一位
range -- 建立一个包含指定范围单元的数组
reset -- 将数组的内部指针指向第一个单元
rsort -- 对数组逆向排序
shuffle -- 将数组打乱
sizeof -- count() 的别名
sort -- 对数组排序
uasort -- 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort -- 使用用户自定义的比较函数对数组中的键名进行排序
usort -- 使用用户自定义的比较函数对数组中的值进行排序
PHP数组排序
php中数组自定义排序 使用 usort函数
PHP usort
$arr = array("哈哈-默默-122","吸收-伏牛山-7","啥的-都是-12");
usort($arr,function($v1, $v2){
//将两个值切割
$va1=explode('-',$v1);
$va2=explode('-',$v2);
//取两个值 的最后一段数字
$num1 = intval(array_pop($va1));
$num2 = intval(array_pop($va2));
//返回比较结果
return $num2$num1?1:($num2$num1?-1:0);
});
var_export($arr);
你看下上面排序结果是否你要的,如果反了,把return中的1和-1换一换就可以了
php如何根据数组中的键值进行排序
$newArr=array();
for($j=0;$jcount($arr);$j++){
$newArr[]=$arr[$j]['flag']
}
array_multisort($newArr,$arr);
print_r($arr)
php 多维数组键值重新排序
$a = array(2=array(1,2,3,4),6=array(6,2,3,5),1=array(1,4,53));
$b = array_values($a);//返回数组中的所有值,形成新的数组,建立数字索引