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

Форум PHP

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

 

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

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

тема: Хитрая сортировка массива
 
 автор: kolt   (28.01.2008 в 14:59)   письмо автору
 
 

Необходимо пересортировать массив. Например у нас первоначальный массив вот такой:

$arr[0]['group'] = '02';
$arr[0]['name'] = 'Ivanov';

$arr[1]['group'] = '03';
$arr[1]['name'] = 'Borisov';

$arr[2]['group'] = '02';
$arr[2]['name'] = 'Alekseev';


Необходимо пересортировать его вот и вывести в таком виде:

02 Alekseev
02 Ivanov
03 Borisov


то-есть по порядку цифер (по возрастанию) в группах и фамилии (по алфавиту).

Спасибо!

   
 
 автор: Unkind   (28.01.2008 в 15:12)   письмо автору
 
   для: kolt   (28.01.2008 в 14:59)
 

<?php 
function cmp($a$b)
{
    if( 
$a['group'] > $b['group'] )
    {
        return 
1;
    }
    else if( 
$a['group'] < $b['group'] )
    {
        return -
1;    
    }
    else
    {
        return 
strcmp($a['name'], $b['name']);
    }
}

$arr[0]['group'] = '02'
$arr[0]['name'] = 'Ivanov'

$arr[1]['group'] = '03'
$arr[1]['name'] = 'Borisov'

$arr[2]['group'] = '02'
$arr[2]['name'] = 'Alekseev';

usort($arr'cmp');

print_r($arr);
?>

   
 
 автор: Саня   (28.01.2008 в 15:19)   письмо автору
 
   для: kolt   (28.01.2008 в 14:59)
 

<?
$arr
[0]['group'] = '02';
$arr[0]['name'] = 'Ivanov';

$arr[1]['group'] = '03';
$arr[1]['name'] = 'Borisov';

$arr[2]['group'] = '02';
$arr[2]['name'] = 'Alekseev';

$new = array();
foreach ( 
$arr as $entry )
  
$new[$entry['group']][] = $entry['name'];

foreach ( 
$new as $key => $val ) {
  
sort($val);
  
$new[$key] = $val;
}
ksort($new);

foreach ( 
$new as $group => $names ) {
  for ( 
$i 0$i count($names); $i++ ) {
    print 
$group." ".$names[$i]."<br/>";
  }
}

   
 
 автор: kolt   (28.01.2008 в 15:48)   письмо автору
 
   для: kolt   (28.01.2008 в 14:59)
 

Громадное спасибо за помощь!

   
Rambler's Top100
вверх

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