一维数组排序,保留key值
16lz
2022-03-04
话不多说,直接上代码
function sortWithKeyName($arr, $orderBy = 'desc')
{
//在内存的另一处 $a 复制内容与 $arr 一样的数组
foreach ($arr as $key => $value)
$a[$key] = $value;
if ($orderBy == 'asc') {//对数组 $arr 进行排序
asort($arr);
} else {
arsort($arr);
}
/*创建一个以原始数组的键名为元素值 (键值) 的
*数组 $b, 其元素 (键值) 顺序,与排好序的数组 $arr 一致。
*/
$index = 0;
foreach ($arr as $keys => $values) //按排序后数组的顺序
foreach ($a as $key => $value) //在备份数组中寻找键值
if ($values == $value)//如果找到键值
$b[$index++] = $key; // 则将数组 $b 的元素值,设置成备份数组 $a 的键名
//返回用数组 $b 的键值作为键名,数组 $arr 的键值作为键值,所组成的数组
return array_combine($b, $arr);
}
//$arr = array('AA'=>3,'AB'=>1,'AC'=>2);
//排序 123 保留 AA,AB,AC
private function sortWithKeyName($arr, $orderBy = 'desc')
{
$new_array = array();
$new_sort = array();
foreach ($arr as $key => $value) {
$new_array[] = $value;
}
if ($orderBy == 'asc') {
asort($new_array);
} else {
arsort($new_array);
}
foreach ($new_array as $k => $v) {
foreach ($arr as $key => $value) {
if ($v == $value) {
$new_sort[$key] = $value;
unset($arr[$key]);
break;
}
}
}
return $new_sort;
}
参考了https://www.cnblogs.com/zengdiao/p/6019290.html
更多相关文章
- Android(安卓)Drawable 和String 相互转化
- android 层叠图片形成一张图片
- Android(安卓)InputStream与String,Byte之间互转
- php变量的8种类型. 遍历php多维数组(foreach与for) 一个函数完成购
- php变量的种类与购物车
- PDO数据库的链接,PDO防mysql数据库预处理机制。以及使用pdo对数据
- array_values()在php中返回数组的操作实例
- php变量的8种类型 遍历php多维数组(foreach与for) 一个函数完成购
- 闭包、访问器属性、类与对象的创建与成员引用、数组与对象的解构