本文目录一览:
- 1、如何对PHP二维数组根据第二维某键值去重和排序
- 2、php二维数组自定义排序
- 3、php循环的二维数组如何排序
- 4、php 二维数组的排序问题
- 5、thinkPHP二维数组排序
- 6、PHP中怎么根据二维数组中的子数组的某个元素进行排序
如何对PHP二维数组根据第二维某键值去重和排序
1 需要排序的数组如下:
$array = array(
array('name'='手机','brand'='诺基亚','price'=1050),
array('name'='笔记本电脑','brand'='lenovo','price'=4300),
array('name'='剃须刀','brand'='飞利浦','price'=3100),
array('name'='跑步机','brand'='三和松石','price'=4900),
array('name'='手表','brand'='卡西欧','price'=960),
array('name'='液晶电视','brand'='索尼','price'=6299),
array('name'='激光打印机','brand'='惠普','price'=1200)
);
2 排序的函数:
function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序
$arr_nums=$arr=array();
foreach($array as $k=$v){
$arr_nums[$k]=$v[$key];
}
if($order=='asc'){
asort($arr_nums);
}else{
arsort($arr_nums);
}
foreach($arr_nums as $k=$v){
$arr[$k]=$array[$k];
}
return $arr;
}
3 调用方式:
arr_sort($array,'price');
php二维数组自定义排序
function pSort($arr)
{
$TimeSort = array();
foreach ($arr as $key = $value) {
$TimeSort[$key] = $value['age'];
}
asort($TimeSort);
$data = array();
foreach ($TimeSort as $key = $value) {
$data[] = $arr[$key];
}
$i = 0;
foreach ($arr as $k = $v) {
$arr[$k] = $data[$i];
$i++;
}
return $arr;
}
主要部分,你也可以考虑用那个多为数组排序的那个函数,上面这个是我前几天自己写的,不知道在你这能用不
php循环的二维数组如何排序
$num=$arr[$a]-18按$num排序其实就是按$arr[$a]来排,只需在循环前对$arr排序就行了。出来的结果自然是按 $num排序
?php
$arr=array(30,15,40,38);
rsort($arr);
for($a=0; $a4; $a++){
$num=$arr[$a]-18;
if($num0){
$arr_1=array(array("$arr[$a]","$num"));
$num_1 = array();
foreach ($arr_1 as $arr_2) {
$num_1[] = $arr_2[1];
}
array_multisort( $num_1,SORT_DESC , $arr_1);
print_r($arr_1);
}
}
?
php 二维数组的排序问题
对二维数组排序,得用到array_multisort()
下面是从php手册摘出来的例子.具体请根据你的问题查阅手册.
=========
数据全都存放在名为 data 的数组中。这通常是通过循环从数据库取得的结果,例如 mysql_fetch_assoc()。
?php
$data[] = array('volume' = 67, 'edition' = 2);
$data[] = array('volume' = 86, 'edition' = 1);
$data[] = array('volume' = 85, 'edition' = 6);
$data[] = array('volume' = 98, 'edition' = 2);
$data[] = array('volume' = 86, 'edition' = 6);
$data[] = array('volume' = 67, 'edition' = 7);
?
本例中将把 volume 降序排列,把 edition 升序排列。
现在有了包含有行的数组,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序。
?php
// 取得列的列表
foreach ($data as $key = $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?
数据集合现在排好序了,结果如下:
volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7
thinkPHP二维数组排序
从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。
遇到这个要求的时候就不是 ORDER BY 能解决的问题了。因此翻看 PHP 手册查找到了如下方法,做此笔记。
废话少说,奉上代码,清单如下:
[php] view plain copy
?php
/**
* 二维数组根据某个字段排序
* 功能:按照用户的年龄倒序排序
* @author ruxing.li
*/
header('Content-Type:text/html;Charset=utf-8');
$arrUsers = array(
array(
'id' = 1,
'name' = '张三',
'age' = 25,
),
array(
'id' = 2,
'name' = '李四',
'age' = 23,
),
array(
'id' = 3,
'name' = '王五',
'age' = 40,
),
array(
'id' = 4,
'name' = '赵六',
'age' = 31,
),
array(
'id' = 5,
'name' = '黄七',
'age' = 20,
),
);
$sort = array(
'direction' = 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
'field' = 'age', //排序字段
);
$arrSort = array();
foreach($arrUsers AS $uniqid = $row){
foreach($row AS $key=$value){
$arrSort[$key][$uniqid] = $value;
}
}
if($sort['direction']){
array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers);
}
var_dump($arrUsers);
/*
输出结果:
array (size=5)
0 =
array (size=3)
'id' = int 5
'name' = string '黄七' (length=6)
'age' = int 20
1 =
array (size=3)
'id' = int 2
'name' = string '李四' (length=6)
'age' = int 23
2 =
array (size=3)
'id' = int 1
'name' = string '张三' (length=6)
'age' = int 25
3 =
array (size=3)
'id' = int 4
'name' = string '赵六' (length=6)
'age' = int 31
4 =
array (size=3)
'id' = int 3
'name' = string '王五' (length=6)
'age' = int 40
*/
PHP中怎么根据二维数组中的子数组的某个元素进行排序
//先用array_column 多维数组按照纵向(列)取出
$date = array_column($arr, '0');
//上面得到的结果:array()
//再用array_multisort 结合array_column得到的结果对$arr进行排序
array_multisort($date,SORT_ASC,$arr);