Решил сделать свою функцию, она может сортировать пользователей по имени и году, в порядке убывания и возрастания, можно ли сократить код? PHP: $mas= [ 0 => [ 'name' => 'Иван', 'year' => '1980' ], 1 => [ 'name' => 'Надя', 'year' => '1970' ], 2 => [ 'name' => 'Вася', 'year' => '2000' ], 3 => [ 'name' => 'Алиса', 'year' => '1994' ], 4 => [ 'name' => 'Сергей', 'year' => '1998' ], 5 => [ 'name' => 'Егор', 'year' => '1992' ], 6 => [ 'name' => 'Михаил', 'year' => '2005' ], 7 => [ 'name' => 'Боря', 'year' => '1991' ] ]; echo '<pre>'; print_r($mas); echo '</pre>'; function sortUser($arr, $key, $compare) { if($key == 'name' && $compare == '>'){ sort($arr); return $arr; } elseif($key == 'name' && $compare == '<'){ rsort($arr); return $arr; } elseif($key == 'year') { $arrName = []; $arrYear = []; foreach($arr as $k => $v) { $arrName[]=$v['name']; $arrYear[]=$v['year']; } if($compare == '>') { arsort($arrYear); //по убыванию } elseif($compare == '<') { asort($arrYear); //по возрастанию } $num = []; $num = array_keys($arrYear); $sortName = []; $sortYear = []; foreach($num as $val) { array_push($sortName, $arrName[$val]); array_push($sortYear, $arrYear[$val]); } $newArr2 = []; for($i = 0; $i < count($num); $i++) { $newArr2[]= $i; $newArr2[$i]=[]; } for($j = 0; $j < count($num); $j++) { $newArr2[$j]=[ 'name' => $sortName[$j], 'year' => $sortYear[$j] ]; } return $newArr2; } } echo '<pre>'; print_r(sortUser($mas, 'year', '>')); print_r(sortUser($mas, 'year', '<')); print_r(sortUser($mas, 'name', '<')); print_r(sortUser($mas, 'name', '>')); echo '</pre>'; --- Добавлено --- Больше двух часов на это ушло.
Я написал свою сортировку без использования пхпшных функций: https://php.ru/forum/threads/sortirovka-dvumernogo-massiva-po-x-kak-tablicy-po-stolbcu.31155/
можно, если правильно применить готовые функции. http://php.net/manual/ru/array.sorting --- Добавлено --- п.с. но ты молодец! делать самостоятельно очень полезно для роста.