На данный вопрос уже ответили:
Дали тестовое задание, 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] => Волга
)
)
Вот пример реализации вашего вопроса с помощью метода 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] => Петропавловск
)
)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Код вроде без ошибок, в чем трабл не могу понять я
пишу запрос: php composerphar require --prefer-dist "himiklab/yii2-sitemap-module" "*" и мне выдает ошибку
Как лучше сделать проверку пользователя на сайте, через куки или через запись времени после авторизации?