Тема: Сортування багатовимірного масиву

Є масив із десяти рядків:

 $cities = array (
'New York'        =>  array('US', 8175133),
'Los Andeles'    =>  array('California', 3792621),
'Chicago'         =>    array('Illinois', 2695598 ),
'Huston'         =>    array('Texas', 2100263),

Чи реально відсортувати його по значенню числа у вбудованому масиві?

2 Востаннє редагувалося koala (23.03.2020 09:10:52)

Re: Сортування багатовимірного масиву

https://www.php.net/manual/en/function.uksort.php

Подякували: leofun01, ostap34PHP2

3

Re: Сортування багатовимірного масиву

Щоб не плодити тему, підкажіть як в саблаймтекст вирівнювати код:

Що я маю на увазі, є код:

$cities = array (
'New York'  =>  array('US', 8175133),
'Los Andeles'  =>  array('California', 3792621),
'Chicago'   =>   array('Illinois', 2695598 ),
'Huston'   =>    array('Texas', 2100263),

Як зробити ого читабельним типу:

   $cities = array (
    'New York'     =>  array('US', 8175133),    
    'Los Andeles'  =>  array('California', 3792621),
    'Chicago'      =>    array('Illinois', 2695598 ),
    'Huston'       =>    array('Texas', 2100263),

є якась комбінація клавіш?

4

Re: Сортування багатовимірного масиву

mmy3uka написав:

як в саблаймтекст вирівнювати код ?

Руцями. Код треба зразу писати вирівняним.

Подякували: mides1

5

Re: Сортування багатовимірного масиву

Скажіть, а ви гуглити пробували? Можете написати, що саме ви вводили і що вам видав гугл?

6

Re: Сортування багатовимірного масиву

koala написав:

гуглити пробували?

Хіба додаткові пакети встановлювати буде. Чистий Sublime не вирівняє.

Подякували: mmy3uka1

7 Востаннє редагувалося mmy3uka (25.03.2020 13:59:51)

Re: Сортування багатовимірного масиву

Пробуав гугли, але нічого путнього не знайшов.
leofun01 - те що треба, дякую.

8 Востаннє редагувалося mides (28.03.2020 18:04:40)

Re: Сортування багатовимірного масиву

Не знаю, чи ще треба, але стало цікаво - довелося зробити. Витратив часу більше, ніж спочатку думав. Причина ускладнень - зберігання назв міст автором теми як KEY, замість цифр, які зазвичай в ключі масивів.

<?php

// input
$cities = array (
    'Lviv'          =>  array('UA', 11111), // even before Huston
    'New York'      =>  array('US', 8175133), // 4
    'Los Andeles'   =>  array('California', 3792621), // 3
    'Chicago'       =>  array('Illinois', 2695598 ), // 2
    'Huston'        =>  array('Texas', 2100263), // 1
);

function custom_sort($a, $b) {
    global $cities_values;

    return $cities_values[$a][1] > $cities_values[$b][1];
}

foreach ($cities as $key => $value) {
    $cities_with_keys[] = $key;
}

$cities_values = array_values($cities);

uksort($cities_values, 'custom_sort');

foreach ($cities_values as $key => $value) {
    echo $cities_with_keys[$key] . ' => ';
}

Виводить:
Lviv => Huston => Chicago => Los Andeles => New York =>

Post's attachments

Screenshot 2020-03-28 at 5.03.24 PM.png 20.29 kb, 28 downloads since 2020-03-28 

Подякували: 0xDADA11C7, pluszz2