【问题标题】:How can I sort an array in PHP alphabetically? [duplicate]如何按字母顺序对 PHP 中的数组进行排序? [复制]
【发布时间】:2011-11-04 16:30:39
【问题描述】:

可能的重复:
How to sort a multi dimensional array in PHP alphabetically?
PHP : Sort array alphabetically

我正在使用 Codeigniter 和 Phils RESTserver 开发一个 API。 在这个 API 中,我访问了一个包含用户的数据库。

我想在输出这些用户之前对其进行排序。 我怎样才能做到这一点?我尝试了以下代码,但不起作用。

function sort_by_lastname($a, $b)
{
    return strcmp($a['user']['basic']['lastname'], $a['user']['basic']['lastname']);
}

这是我的 JSON 格式数据。

http://pastie.org/2402372

如何更改上述内容以对输出进行排序(当采用 PHP 数组格式,而不是 JSON 时)。

感谢大家的帮助!

【问题讨论】:

  • -1 用于研究。 array_sort()
  • 对于初学者,您应该比较 $a[...] 和 $b[...]。
  • 为什么不用数据库来排序呢?
  • @Rikudo - 有趣的是我不知道有一个函数叫做array_sort()。尽管如此,他还是想根据嵌套数组值的标准对父数组进行排序。
  • 好吧,我投了反对票,因为我试图在他的另一个问题中回答他的问题,但他却开始了一个新问题。

标签: php arrays codeigniter


【解决方案1】:
function sort_by_lastname($a, $b) {
    $a = trim($a['user']['basic'][0]['lastname']);
    $b = trim($b['user']['basic'][0]['lastname']);

    if ($a == $b) {
        return 0;
    }

    return ($a < $b) ? -1 : 1;
}

uasort($array['contacts'],'sort_by_lastname');

【讨论】:

  • +1 这确实有效:pastie.org/2434498
  • 现在非常接近。这是数组在转换为 JSON 对象之前的样子。 pastie.org/2435409。我收到此错误:uasort() 期望参数 1 为数组,给定 null。
  • 我也收到此错误:致命错误:无法使用 stdClass 类型的对象作为数组。
  • 您的 json_decode 中缺少 assoc 标志:json_decode($array,TRUE) 其中 TRUE 表示创建关联数组。
【解决方案2】:

【讨论】:

    【解决方案3】:

    在此处询问之前检查 PHP.net。快速搜索会发现 PHP 的 asort() 函数:http://php.net/asort

    【讨论】:

    • 真的吗?你能给我们看一些示例代码吗?
    • 我不是为你做你的工作
    • @andy 如果你保持这种态度,你会被 3 位数的代表分数所困扰。我们是一个基于示例的社区,据您所知,OP 尝试了他可以在 php.net 上找到的所有排序函数,但还不够先进,无法按子数组值对父数组进行排序。
    • “被 3 位数的代表分数困扰?”我想我会活下去。而且我坚持将OP指向PHP.net的答案,特别是考虑到问题当前的-6分。也许我对特定代码请求的回应有点苛刻,但我的观点是,像 StackOverflow 这样的网站不应该是糟糕的程序员来为他们完成工作的地方,它应该是所有程序员都来的地方学习如何变得更好。教人钓鱼等等。
    • 很公平。请记住,rep = 特权。如果您真的想帮助 SO 成为一个更好的地方,那么如果您有更高的代表,这对您来说会容易得多。
    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2017-01-17
    • 2012-12-06
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多