Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка двумерного массива.
 
 автор: B@cZ   (12.02.2007 в 03:26)   письмо автору
 
 

У меня есть массив:

$arr = array(
  '4' => array (
    'login' => 'Anya',
    'gender' => 'm'
  ),
  '34' => array (
    'login' => 'Petya'
    'gender' => 'f'
  ),
  '2' => array (
    'login' => 'Zemfira'
    'gender' => 'm'
  )
);


Как видите все элементы находятся в отсортировоном порядке по ключу - login.

Мне необходимо добавить в массив новое значение.

$arr['7'] = array (
  'login' => 'Borya',
  'gander' => 'f'
);


Помогите написать функцию которая будет сортировать этот массив по ключу login, не трогая уникальные индификаторы 4,32,2,7, т.е. чтобы они оставались у своих владельцев, просто чтобы элементы сли в порядке возростания по login.

Чтобы в данном примере в итоге получился массив:

$arr = array(
  '4' => array (
    'login' => 'Anya',
    'gender' => 'm'
  ),
  '7' => array (
    'login' => 'Borya',
    'gender' => 'f'
  ),
  '34' => array (
    'login' => 'Petya'
    'gender' => 'f'
  ),
  '2' => array (
    'login' => 'Zemfira'
    'gender' => 'm'
  )
);

   
 
 автор: B@cZ   (12.02.2007 в 03:36)   письмо автору
 
   для: B@cZ   (12.02.2007 в 03:26)
 

Очень прошу не ссылайте меня на другие темы, мне бы хотелось увидеть сортировку именно для этого случая.

   
 
 автор: Trianon   (12.02.2007 в 09:48)   письмо автору
 
   для: B@cZ   (12.02.2007 в 03:26)
 

функция называется uasort()

А представление о gender у Вас несколько превратное :)

   
 
 автор: AlMag   (12.02.2007 в 10:09)   письмо автору
 
   для: Trianon   (12.02.2007 в 09:48)
 

Никак не могу привыкнуть, что индексы массива могут быть не только целые числа...
А так можно было бы воспользоваться всортировкой ( половинным делением найти место,
куда надо вставить элемент, и вставить его туда, подвигая все следующие элементы массива ).

   
 
 автор: B@cZ   (12.02.2007 в 10:44)   письмо автору
 
   для: Trianon   (12.02.2007 в 09:48)
 

Звиняюсь, чуток попутал, 3-и часа ночи было, епт)

   
 
 автор: B@cZ   (12.02.2007 в 10:51)   письмо автору
 
   для: Trianon   (12.02.2007 в 09:48)
 

На счет uasort()
Функцию знаю, но как ее применить в данном случае, если она сортирует одномерный массив?

   
 
 автор: Trianon   (12.02.2007 в 11:09)   письмо автору
 
   для: B@cZ   (12.02.2007 в 10:51)
 


function cmp($a, $b) { return $a['login'] < $b['login'] ? -1 : ($a['login'] > $b['login']);  }
uasort($arr, 'cmp');


В php любой массив - по жизни одномерный... Здесь Вам не алгол и не фортран.

   
 
 автор: B@cZ   (12.02.2007 в 11:49)   письмо автору
 
   для: Trianon   (12.02.2007 в 11:09)
 

Спасибо, я уже и сам сделал) Но все равно спасибо, меньше когда, будет вот так:
function cmp($a, $b) {
  return strcmp($a['login'], $b['login']);
}
uasort($arr,'cmp') ;

   
 
 автор: AlMag   (12.02.2007 в 11:55)   письмо автору
 
   для: B@cZ   (12.02.2007 в 11:49)
 

Я и не знал, что можно так извращаться над вызовами ф-ций)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования