Сортировка массива [дубликат]

276
24 июня 2017, 13:25

На данный вопрос уже ответили:

  • Сортировка ассоциативного массива по ключу 1 ответ

Дали тестовое задание, php владею не плохо, но вот суть задания не понял. Может кто поможет и покажет.

ЗАДАНИЕ - написать функцию сортировки массива $TH, такую чтоб можно было на вход подать имя ключа и он по его значению отсортировал массив $TH

<?php
$m = array('a'=>'Honda','b'=>'Hummer','c'=>'BMW','d'=>'Toyota'); 
$s = array('a'=>'AH','b'=>'TU-144','c'=>'Boing','d'=>'СУ'); 
$t = array('a'=>'Тигр','b'=>'Пантера','c'=>'Т-34','d'=>'Волга'); 
$k = array('a'=>'Кузнецов','b'=>'Ямато','c'=>'Ясень','d'=>'Петропавловск'); 
$TH = array($m, $s, $t, $k); 
//Т.Е. Было:
Array
(
    [0] => Array
       (
           [a] => Honda
           [b] => Hummer
           [c] => BMW 
           [d] => Toyota
       )
   [1] => Array
       (
           [a] => AH
           [b] => TU-144
           [c] => Boing
           [d] => СУ
       )
   [2] => Array
       (
           [a] => Тигр
           [b] => Пантера
           [c] => Т-34
           [d] => Волга
       )
   [3] => Array
       (
           [a] => Кузнецов
           [b] => Ямато
           [c] => Ясень
           [d] => Петропавловск
       )
)

//Стало:
Array
(
   [1] => Array
       (
           [a] => AH
           [b] => TU-144
           [c] => Boing
           [d] => СУ
       )
   [0] => Array
       (
           [a] => Honda
           [b] => Hummer
           [c] => BMW
           [d] => Toyota
       )
   [3] => Array
       (
           [a] => Кузнецов
           [b] => Ямато
           [c] => Ясень
           [d] => Петропавловск
       )
   [2] => Array
       (
           [a] => Тигр
           [b] => Пантера
           [c] => Т-34
           [d] => Волга
       )
)
Answer 1

Вот пример реализации вашего вопроса с помощью метода usort:

<?php
    $m = array('a'=>'Honda','b'=>'Hummer','c'=>'BMW','d'=>'Toyota'); 
    $s = array('a'=>'AH','b'=>'TU-144','c'=>'Boing','d'=>'СУ'); 
    $t = array('a'=>'Тигр','b'=>'Пантера','c'=>'Т-34','d'=>'Волга'); 
    $k = array('a'=>'Кузнецов','b'=>'Ямато','c'=>'Ясень','d'=>'Петропавловск'); 
    $TH = array($m, $s, $t, $k);
    echo '<pre>';
    print_r($TH);

    function sort_arr($arr, $key){
        uasort($arr, function ($a, $b) use ($key) {
            if ($a[$key] == $b[$key]) return 0;
            return ($a[$key] < $b[$key]) ? -1 : 1;
        });
        echo '<pre>';
        print_r($arr);
    }
    sort_arr($TH, 'a');
    sort_arr($TH, 'c');
?>

Подробно об этой строке uasort($arr, function ($a, $b) use ($key):

внутри callback функции не видны внешние переменные, их можно задать так use ($param1, $param2,...) что бы они были видны внутри функции .

И вот 2 вывода print_r сортированные первый параметром a, и второй параметром c.

Сортировка a:

Array
(
    [0] => Array
        (
            [a] => AH
            [b] => TU-144
            [c] => Boing
            [d] => СУ
        )
    [1] => Array
        (
            [a] => Honda
            [b] => Hummer
            [c] => BMW
            [d] => Toyota
        )
    [2] => Array
        (
            [a] => Кузнецов
            [b] => Ямато
            [c] => Ясень
            [d] => Петропавловск
        )
    [3] => Array
        (
            [a] => Тигр
            [b] => Пантера
            [c] => Т-34
            [d] => Волга
        )
)

Сортировка c:

Array
(
    [0] => Array
        (
            [a] => Honda
            [b] => Hummer
            [c] => BMW
            [d] => Toyota
        )
    [1] => Array
        (
            [a] => AH
            [b] => TU-144
            [c] => Boing
            [d] => СУ
        )
    [2] => Array
        (
            [a] => Тигр
            [b] => Пантера
            [c] => Т-34
            [d] => Волга
        )
    [3] => Array
        (
            [a] => Кузнецов
            [b] => Ямато
            [c] => Ясень
            [d] => Петропавловск
        )
)
READ ALSO
Imagick ошибка использования LiquidRescaleImage

Imagick ошибка использования LiquidRescaleImage

Код вроде без ошибок, в чем трабл не могу понять я

271
Массив или несколько значений в str_replace

Массив или несколько значений в str_replace

Доброго времени суток!

248
Ошибка composer &ldquo;Could not open input file&rdquo;

Ошибка composer “Could not open input file”

пишу запрос: php composerphar require --prefer-dist "himiklab/yii2-sitemap-module" "*" и мне выдает ошибку

294
Статус пользователя на сайте

Статус пользователя на сайте

Как лучше сделать проверку пользователя на сайте, через куки или через запись времени после авторизации?

327