Мой вопрос - это расширение / вариант этого уже хорошо известного вопроса :
Существует массив с двоичными ключами:
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'],
];
I нужен этот массив, упорядоченный следующим образом:
$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);
});
но ...
... длина ключа уже сохранена в value[0]
. Следовательно, strlen()
не нужно использовать в функции сравнения.
Я попытался адаптировать некоторые решения, приведенные в связанном вопросе, соответственно с использованием value[0]
, но не пришел к желаемому результат.
Может ли кто-нибудь направить меня на верный путь?