首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中为人类(自然排序)排序关联数组?

如何在php中为人类(自然排序)排序关联数组?
EN

Stack Overflow用户
提问于 2013-03-24 14:58:52
回答 4查看 970关注 0票数 2

如何在php中为人类(自然排序)排序关联数组?

以下代码:

将输出:10 - 1 - 7

以及如何获得“数字”排序(对人类而言)?喜欢:1 - 7 - 10

如果'Number‘是一个int,如果它是一个字符串,又会怎样呢?

EN

回答 4

Stack Overflow用户

发布于 2013-03-24 15:08:28

你可以这样试一试:

代码语言:javascript
复制
<?php

function record_sort($records, $field, $reverse=false)
 {
     $hash = array();

    foreach($records as $record)
     {
         $hash[$record[$field]] = $record;
     }

    ($reverse)? krsort($hash) : ksort($hash);

    $records = array();

    foreach($hash as $record)
     {
         $records []= $record;
     }

    return $records;
 }

// Example below

$airports = array
 (
     array( "code" => "LHR", "name" => "Heathrow" ),
     array( "code" => "LGW", "name" => "Gatwick" ),
 );

printf("Before: <pre>%s</pre>", print_r($airports, true));

$airports = record_sort($airports, "name");

printf("After: <pre>%s</pre>", print_r($airports, true));

?>

Example Outputs:

Before: Array
 (
     [0] => Array ( [code] => LHR, [name] => Heathrow )
     [1] => Array ( [code] => LGW, [name] => Gatwick )
 )

After: Array
 (
     [0] => Array ( [code] => LGW, [name] => Gatwick )
     [1] => Array ( [code] => LHR, [name] => Heathrow )
 ) 

来自http://php.net/manual/en/function.asort.php

票数 1
EN

Stack Overflow用户

发布于 2013-03-24 15:05:08

字段"Number“是字符串,因此它被逐个字符(而不是数千个)、然后几百个(等等)进行比较。

您可以编写自己的排序函数,并将其与usort一起使用,也可以将sortSORT_NUMERIC (可能是array_multi_sort )结合使用。

票数 0
EN

Stack Overflow用户

发布于 2013-03-28 15:46:27

如果Number字段是整数(或浮点数),则只需使用array_multisort并指定要对Number字段进行排序。http://php.net/manual/en/function.array-multisort.php文档中的示例3向您展示了如何对关联数组执行此操作。

如果Number是一个字符串,那么事情就更难了--在这种情况下,您必须进行“自然”排序,以确保"7“出现在"10”之前。如果您使用的是PHP5.4或更高版本,则可以使用带有array_multisort标志的SORT_NATURAL。如果您使用的是比PHP5.4更老的东西,那么您可能必须使用usortstrnatcmp。有关如何执行此操作的详细信息,请参见https://stackoverflow.com/a/11315019/26311

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15599961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档