编程求解:PHP多维数组按值排序,该用什么办法?
主要用到的PHP函数 array_multisort()
1.先实现指定多维数组一个字段排序根据二维数组的id值来排序,转换后的数组格式如下:
function arraySortByOneField($data, $field, $sort = SORT_DESC)
{
$field = array_column($data, $field);
array_multisort($field,$sort,$data);
return $data;
}
$data = array(0=>array('id'=>7, 'name'=>'Apple', 'age'=> 18),1=>array('id'=>8, 'name'=>'Bed', 'age'=>17),2=>array('id'=>6, 'name'=>'Cos', 'age'=>16),3=>array('id'=>5, 'name'=>'Cos', 'age'=>14));
$newArray = arraySortByOneField($data, 'id', SORT_DESC);
var_dump($newArray );
2.实现多维数组的指定两个字段排序根据二维数组的多个属性值来排序,转换后的数组格式如下:
function sortArrByManyField()
{
$args = func_get_args();
if(empty($args)){
return null;
}
$arr = array_shift($args);
if(!is_array($arr)){
throw new Exception("第一个参数不为数组");
}
foreach($args as $key => $field){
if(is_string($field)){
$temp = array();
foreach($arr as $index=> $val){
$temp[$index] = $val[$field];
}
$args[$key] = $temp;
}
}
$args[] = &$arr;//引用值
call_user_func_array('array_multisort',$args);
return array_pop($args);
}
$data = array(0=>array('id'=>7, 'name'=>'Apple', 'age'=> 18),1=>array('id'=>8, 'name'=>'Bed', 'age'=>17),2=>array('id'=>6, 'name'=>'Cos', 'age'=>16),3=>array('id'=>5, 'name'=>'Cos', 'age'=>14));
$newArray = arraySortByManyField($data, 'id', SORT_ASC, 'name', SORT_ASC, 'age', SORT_DESC);
var_dump($newArray );
PHP中如何才为一个数组,$arr=array(array(1,2,3,4,5),array(6,7,8,9,10))算是一个数组吗?
都是,数组中的子元素可以是单个字符、字符串,也可以是一个数组。
php如何按顺序排列数组?
PHP 数组的排序函数
在本节中,我们将学习如下 PHP 数组排序函数:
sort() 以升序对数组排序
rsort() 以降序对数组排序
asort() 根据值,以升序对关联数组进行排序
ksort() 根据键,以升序对关联数组进行排序
arsort() 根据值,以降序对关联数组进行排序
krsort() 根据键,以降序对关联数组进行排序
什么是PHP数组?PHP数组有哪几类?
不贴内容了,原因几个帖子,题主看一看,对PHP数组会有一个深刻的认识。
大多是对数组有个印象,而你可以对数组之所以是数组有个理解了。
1 《PHP没有真正的数组》CSDN译的一篇外文,说的很透彻:
https://mp.weixin.qq.com/s/sbBzj_BwI-MoYV8yA5r_og
2 其实上一个文章,在php的官方文档Array一节介绍的非常仔细,还有例证。
https://www.php.net/manual/zh/language.types.array.php
文档开头就说了,“PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。”
且key仅支持数字和string。其他类型的会自动进行类型转换。
题主亲自动手敲一下吧。
php获取数组键名和键值?
直接用键名获取,比如:$a = array('name'=>'admin');你知道键名是name,那么直接输出:echo $a['name']就行了。
PHP
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。