【问题标题】:usort: how I can sort by multiple data types? [duplicate]usort:如何按多种数据类型进行排序? [复制]
【发布时间】:2011-12-09 07:32:20
【问题描述】:

可能重复:
Sort multidimensional array by multiple keys

我想知道如何usort 一个不同数据类型的数组。例如,我有这个数据:

priority | title
2          B
3          C
2          A
1          A
3          D

我需要进行“双重排序”(如 SQL priority ASC, title ASC)来获得它:

priority | title
1          A
2          A      
2          B
3          C
3          D

真的,我需要用太多的值来做,但我只需要基础。但是为了享受而不是冒险采用不同的逻辑,我真正的问题是像这样组织:int priority ASC, string method ASC, string prefix ASC, int index ASC

我尝试了一些东西,但我无法工作。 :(

【问题讨论】:

  • 请展示此示例数据如何匹配您的数据结构(数组数组)。
  • 真的,@FelixKling 它是重复的,它也解决了我的问题。谢谢。 :)

标签: php usort


【解决方案1】:

基于:PHP.net:multisort()

正如您在问题中所说,这只是如何完成的基础知识。为了使整个事情更加动态,您需要一种方法将排序选择传递给一个函数,然后在 foreach 中使用它们来控制使用哪些排序数组...

<?php
//Build example data
$data = array();
$data[] = array('priority'=>2,'title'=>'B');
$data[] = array('priority'=>3,'title'=>'C');
$data[] = array('priority'=>2,'title'=>'A');
$data[] = array('priority'=>1,'title'=>'A');
$data[] = array('priority'=>3,'title'=>'D');

foreach ($data as $key => $row) {
    $priority[$key]  = $row['priority'];
    $title[$key] = $row['title'];
}

array_multisort($priority, SORT_ASC, $title, SORT_ASC, $data);

print_r($data);
?>

【讨论】:

  • 我比 usort 更喜欢这个。
猜你喜欢
  • 2018-02-01
  • 2019-02-22
  • 2014-07-16
  • 2018-08-08
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 2018-09-02
相关资源
最近更新 更多