如何根据参数对数组进行排序

用户名

我有这样的JSON:

{
    "class": {
        "type": "major",
        "order": "1"
    },
    "number": {
       "type": "date",
       "order": "5"
    },
    "amount": {
        "type": "date",
        "order": "3"
    },
}

我需要将其放入PHP数组并根据order字段进行排序

如果数字相同,则订单应保持原样。

编辑:

另外,如果某些元素没有,order那么它们应该位于底部

乔治·布莱顿

您可以使用json_decode()将其转换为PHP数组。然后,您需要编写一个稳定的实现usort()以对值进行排序。像这样的东西:

function stableSort(array $array) {
    // turn the input array into something we can more easily manipulate
    $lookup = array();
    $i = 0;
    foreach($array as $key => $value) {
        $lookup[] = array(
                'position' => $i++,
                'key' => $key,
                'value' => $value);
    }

    usort($lookup, function(array $a, array $b) {
        if(!isset($a['value']['order'])) {
            if(!isset($b['value']['order'])) {
                return $a['position'] > $b['position'];
            }
            return 1;
        }

        if(!isset($b['value']['order'])) {
            return -1;
        }

        if($a['value']['order'] == $b['value']['order']) {
            return $a['position'] > $b['position'];
        }

        return $a['value']['order'] > $b['value']['order'] ? 1 : -1;
    });

    // recreate the original array
    $sorted = array();
    foreach($lookup as $element) {
        $sorted[$element['key']] = $element['value'];
    }

    return $sorted;
}

$array = json_decode($json, true);
$sorted = stableSort($array);

我们绝不从比较函数中返回0,因为那样会破坏对稳定排序的保证。前两个if语句用于处理其中order一个或两个输入中都不存在键的情况

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据TimeWise对数组进行排序?

来自分类Dev

如何根据主数组中的长度对数组进行排序

来自分类Dev

如何根据数组的转换对数组进行排序

来自分类Dev

如何根据大小对数字数组列表进行排序?

来自分类Dev

如何根据短距离对数组进行排序

来自分类Dev

如何首先根据键对数组进行排序?

来自分类Dev

如何根据类别对数组进行排序?

来自分类Dev

如何按其参数对数组列表进行排序?

来自分类Dev

如何对数组进行排序

来自分类Dev

PHP根据值对数组进行排序

来自分类Dev

根据特定元素对数组进行排序

来自分类Dev

PHP根据值对数组进行排序

来自分类Dev

根据值对数组进行排序

来自分类Dev

如何根据另一个数组的位置对数组进行排序?

来自分类Dev

如何根据数组中的一个对象对数组进行数值排序?

来自分类Dev

如何根据另一个数组的值对数组的值进行排序

来自分类Dev

对数组进行排序并根据某些值进行排列

来自分类Dev

根据预定义的数组对数组(结果集)进行排序

来自分类Dev

根据相似的数组对数组进行排序?

来自分类Dev

根据子数组计数对数组进行排序

来自分类Dev

根据预定义的数组对数组(结果集)进行排序

来自分类Dev

根据数组长度对数组进行排序

来自分类Dev

PHP - 根据索引=> 子数组的值对数组进行排序

来自分类Dev

根据优先级数组对数组对象进行排序

来自分类Dev

如何防止awk对数组进行排序?

来自分类Dev

如何使用PHP对数组进行排序

来自分类Dev

如何按“包含”对数组进行排序?

来自分类Dev

如何根据语句对数组进行计数?

来自分类Dev

如何根据某种条件对数组进行部分排序?

Related 相关文章

热门标签

归档