排序PHP中的多维数组 [英] Sort a multi-dimensional Array in PHP

查看:125
本文介绍了排序PHP中的多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不unstand排序PHP中的多维数组的方式。我有这样的结构:

i do not unstand the way to sort a multi-dimensional array in php. I have a structure like this:

Array (
   [0] (
      ['vname'] => "Bernt"
      ['nname'] => "Mayer"
      ['kl_name'] => "ZR4"
   )
   [1] (
      ['vname'] => "Albert"
      ['nname'] => "Mayer"
      ['kl_name'] => "TR4"
   )
)

我现在的目标是在前排序kl_name,再由n名称,然后VNAME。最重要的是kl_name。
首先,我因子评分我应该使物体,并将其存储在阵列中,但我认为它们排序则更为复杂。 php.net有大约在array_multisort一个很好的文章,但今年,我不明白它:/

My goal is now to first sort by kl_name, and then by nname and then vname. Most important is kl_name. First i tought i should make objects and store them in the array, but i think sorting them is even more complex. php.net has a nice article about array_multisort, but year, i dont understand it :/

推荐答案

您会想用用户定义函数的数组进行排序(用的 usort )。

You'll want to sort the array with a user defined function (with usort).

您可以手动指定您希望如何使用,责令该项目 kl_name n名称 VNAME 属性。

You can then manually specify how you'd like the items to be ordered using the kl_name, nname and vname attributes.

事情是这样的:

usort($arr, function($a, $b) {
    if ($a['kl_name'] !== $b['kl_name']) {
        return strcmp($a['kl_name'], $b['kl_name']);
    } else if ($a['nname'] !== $b['nname']) {
        return strcmp($a['nname'], $b['nname']);
    } else {
        return strcmp($a['vname'], $b['vname']);
    }
});

该功能将首先尝试通过 kl_name 进行排序,然后通过 n名称最后由 VNAME 如果所有previous值是相等的。

The function will first attempt to sort by kl_name, then by nname and finally by vname if all previous values are equal.

这篇关于排序PHP中的多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆