在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];
});