按子数组类型值排序,然后按字母顺序排序

贾斯汀

我有一个看起来像这样的数组:

$array = [
    'field1' => [
        '#type' => 'text',
        '#label' => 'Field 11',
    ],
    'field4' => [
        '#type' => 'fieldset',
        '#label' => 'Field 4',
    ],
    'field12' => [
        '#type' => 'text',
        '#label' => 'Field 12',
    ],
    'field3' => [
        '#type' => 'fieldset',
        '#label' => 'Field 3',
    ],
    'field18' => [
        '#type' => 'text',
        '#label' => 'Field 18',
    ],
];

我想以所有类型字段fieldset都在底部的方式对这个数组进行排序同时,我希望文本字段(位于顶部)按字母顺序排序,字段集(#label应位于底部)也应按标签字母顺序排序。这是我到目前为止所拥有的。

ksort($array);
uasort($array, function($field1) {
    if ($field1['#type'] !== 'fieldset') {
        return 0;
    }
    return 1;
});

按键值对数组进行排序成功地按字母顺序对我的整个数组进行排序。但是一旦我添加了uasort,尽管我fieldset的 位于底部,但字母顺序不再存在。

有任何想法吗?

飞溅58

使用 usort 有 2 个条件

 usort($array, function ($i1, $i2) { 
                 // compare types 
                 $r = ($i1['#type'] == 'fieldset' ? 1 : 0) -  ($i2['#type'] == 'fieldset' ? 1 : 0); 
                 // if both are (or not) fieldset (r == 0), compare labels
                 return $r ? $r : strcmp($i1['#label'], $i2['#label']);  } );

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按值对Hashmap排序,然后按字母顺序排序

按长度排序数组,然后按字母顺序排序

按字段对对象数组进行排序,然后按字母顺序排序

按字母顺序对字符数组进行排序,然后按长度排序

给定哈希数组,按字母顺序排序,然后按数字排序

熊猫value_counts:按值排序,然后按字母顺序排序?

C-按计数排序,然后按字母顺序

按子词典的值排序,然后按主键排序

按自定义字段排序对象数组,然后按字母顺序

按字母顺序对数据表进行字母排序,然后按R中的数字值排序

在Java中按长度先对数组排序,然后按字母顺序对数组进行排序

如何按字母顺序对 csv 数据进行排序,然后按列按数字排序?

PHP中的二维数组的数字然后按字母顺序排序

如何先按字母顺序对字典排序,然后按值升序排列?

按数据属性(按字母顺序,然后按数字顺序)对列表项进行排序

如何使用sort_by按字母顺序然后按数字顺序然后按特殊字符排序

MySQL-如何按名称排序,然后按字母数字顺序在表上排序?

MySQL-按多个单词排序,然后按字母顺序排序?

MongoDB:按现有字段排序,然后按字母顺序排序

PHP高级按数字先排序,然后按字母顺序排序

Python按降序排序字典,然后按字母顺序排序

SQL如何用数字按字母顺序排序文本,然后按数字排序

按字母顺序排序下拉列表,然后按特定前缀排序

按索引对大熊猫数据框进行排序,然后按字母顺序排序

按枚举排序列表,然后按字母顺序排序

按字母顺序,按未由APPLE开头的字母排序,然后按以APPLE开头的字母排序

Postgres / ActiveRecord按字母排序,然后按数字排序?

Linq按属性排序,然后按原始顺序排序

Dplyr / tidyverse如何首先按可用值的数量对列进行排序,然后按字母顺序对列进行排序?