在PHP中,按键长度(值中的键长度)降序排列数组

在PHP中,按键长度(值中的键长度)降序排列数组,php,arrays,sorting,Php,Arrays,Sorting,我的问题是以下方面的延伸/变化: 有一个具有二进制外观键的数组: codeWords = [ '000111' => [6, 1, 0, 't'], '1110' => [4, 6, 0, 't'], '10011' => [5, 8, 0, 't'], '001000' => [6, 12, 0, 't'], '00110101' => [8, 0, 0, 't'],

我的问题是以下方面的延伸/变化:

有一个具有二进制外观键的数组:

    codeWords = [
        '000111' => [6, 1, 0, 't'],
        '1110' => [4, 6, 0, 't'],
        '10011' => [5, 8, 0, 't'],
        '001000' => [6, 12, 0, 't'],
        '00110101' => [8, 0, 0, 't'],
        '010' => [3, 1, 1, 't'],
        '10' => [2, 3, 1, 't'],
        '011' => [3, 4, 1, 't'],
        '0010' => [4, 6, 1, 't'],
        '00011' => [5, 7, 1, 't'],
        '000101' => [6, 8, 1, 't'],
    ];
我需要按如下顺序排列此阵列:

    $codeWords = [
        '00110101' => [8, 0, 0, 't'],
        '001000' => [6, 12, 0, 't'],
        '000111' => [6, 1, 0, 't'],
        '000101' => [6, 8, 1, 't'],
        '10011' => [5, 8, 0, 't'],
        '00011' => [5, 7, 1, 't'],
        '1110' => [4, 6, 0, 't'],
        '0010' => [4, 6, 1, 't'],
        '011' => [3, 4, 1, 't'],
        '010' => [3, 1, 1, 't'],
        '10' => [2, 3, 1, 't'],
    ];
此解决方案运行良好:

    uksort($codeWords, function($a, $b) {
        return strlen($a) < strlen($b);
    });
uksort($codeWords,function($a,$b){
返回strlen($a)
但是

…密钥长度已存储在
值[0]
中。因此,比较函数中不必使用
strlen()

我尝试使用
值[0]
,相应地调整链接问题中给出的一些解决方案,但没有达到预期的结果

有人能帮我找到正确的方法吗?

该函数专门使用数组键,因此您的代码
返回$a[0]<$b[0]仅比较
0010101
键的第一个符号

你需要


uksort使用键,但您希望按
值[0]
进行排序?不清楚最终结果应该是什么?试着这样形成你的问题:考虑到这个世界。。。(你已经这样做了。所以好吧),当我这样做的时候…(解释你做了什么,也做了。好吧),我希望这会发生…(解释你期望发生什么,这是缺失的)。@lewis4u我想标题会很好地描述它,从一开始就制作最终的输出数组。。。。它应该是什么样子?最长的键应该在顶部,最短的键应该在底部?我以前试过这个:然后这些键被数字指示器替换了。对了,我的错,就是这样了。修复了。我还添加了指向英文版文档的链接。
    uasort($codeWords, function($a, $b) {
        return $b[0] - $a[0];
    });