Как выполнить сортировку массива с строковыми ключами, содержащими числа?

Рейтинг: 0Ответов: 1Опубликовано: 05.07.2023

Как отсортировать такой массив по ключу, по возрастанию? ksort() не помог(((

Array
(
    [100x180] => Array
        (
            
        )      
[100x185] => Array
        (
            
        )       
[90x180] => Array
        (
            
        )           
[70x100] => Array
        (
            
        )    
)    

Нужно чтобы шли они в таком порядке:

[70x100] => Array()
[90x180] => Array()
[100x180] => Array()
[100x185] => Array()

Ответы

▲ 0Принят

что-то подобное видимо

$data = ['90x100', '70x180','10x1000', '100x110', '100x100'];
$data =array_flip($data);
uksort($data, function($a, $b){
    [$w1, $h1] = explode('x', $a);
    [$w2, $h2] = explode('x', $b);
    
    return $w1 != $w2 ? $w1 - $w2 : $h1 - $h2;
});
print_r($data);

либо, как отмечено в комментариях @MBo

ksort($data, SORT_NATURAL);