Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Сортировка массива.

#1 sabr07

sabr07
  • Пользователь
  • 2 сообщений
  • Репутация: 0
0

Отправлено 16 Март 2013 - 23:51

Есть массив. Как отсортировать по значению ключа 'Возраст' ?

$class = array(
			   array(
					 "Ф.И.О" => 'Сидоров Александр Александрович',
					 "Возраст" => '35',
					 "Визитов" => '3'
					 ),
			   array(
					 "Ф.И.О" => 'Иванов Алексей Алексеевич',
					 "Возраст" => '40',
					 "Визитов" => '8'
					 ),
			   array(
					 "Ф.И.О" => 'Петров Сергей Борисович',
					 "Возраст" => '27',
					 "Визитов" => '5'
					 ),
			  );

Я имею в виду, что по первому ключу "Ф.И.О" и по последнему "Визитам" получается. А из середины выбрать и отсортировать как?

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Сортировка двумерного массива
  2. Сортировка записи
  3. Сортировка нескольких масивов
  4. Как вывести элементы из массива в обратном порядке?
  5. Сортировка многомерного ассоциативного массива

#2 sabr07

sabr07
    Topic Starter
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 17 Март 2013 - 09:30

Все разобрался.
 

function cmp($key,$value){
if($key["Возраст"] == $value["Возраст"]){
return 0;
}
return($key["Возраст"] < $value["Возраст"]) ? -1 : 1;
}
uasort ($class,'cmp');
foreach ($class as $k => $z){
foreach ($z as $c => $d){
echo "$c ==> $d<br>";
}
}

  • 0

#3 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 18 Март 2013 - 08:51

sabr07,
есть же готовая функция для сортировки многомерных массивов: array_multisort. Так что сортировка массива по заданному столбцу выглядит как-то так:
<?php
$class = array(
array(
"Ф.И.О" => 'Сидоров Александр Александрович',
"Возраст" => '35',
"Визитов" => '3'
),
array(
"Ф.И.О" => 'Иванов Алексей Алексеевич',
"Возраст" => '40',
"Визитов" => '8'
),
array(
"Ф.И.О" => 'Петров Сергей Борисович',
"Возраст" => '27',
"Визитов" => '5'
),
);

function arr_sort($array_to_sort, $by_column){
  foreach ($array_to_sort as $value) {
   $sort_column[] = $value[$by_column];
  }
  array_multisort($sort_column, SORT_NUMERIC, SORT_ASC, $array_to_sort);
  return $array_to_sort;
}

echo "<pre>n";
print_r (arr_sort($class, 'Возраст'));
echo "</pre>n";
?>

  • 1


Оформление форума – IPBSkins.ru