Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2010, 17:49   #1
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию Как отсортировать ключи и значения в многомерном массиве?

Есть многомерный массив (делаю задание по книге "PHP 5 на примерах"), характеризующих состав университета: факультеты, преподаватели и их данные (должность, возраст и т.п.).
Нужно вывести список преподавателей каждого факультета, отсортированный по алфавиту.
Вот мой результат (строго не судите, ибо я новичок в программировании вообще). Пытался занести в массив значение $fio и потом отсортировать, но не вышло.
Подскажите пожалуйста верный путь.
PHP код:
<?php
$univer 
= array(
            
"Факультет Конституционного права" => array(
                        
"Партосов Иван Васильевич" => array(
                                            
"профессор""54 года""доктор юридических наук"),
                        
"Клюев Константин Георгиевич" => array(
                                            
"старший преподаватель""45 лет""кандидат юридических наук")),
            
"Гражданско-правовой факультет" => array(
                        
"Иванов Петр Николаевич" => array(
                                            
"доцент""28 лет""кандидат юридических наук")),
            
"Факультет Уголовно-процессуального права" => array(
                        
"Петрова Марина Васильевна" => array(
                                            
"преподаватель""24 года"),
                        
"Васечкин Василий Филиппович" => array(
                                            
"преподаватель""26 лет"))
            );

foreach(
$univer as $key => $teacher)
{
    
//выводим название факультета
    
echo("<b>$key</b>\n"."\n");

    foreach(
$teacher as $fio => $status)
    {
//выводим список преподавателей по алфавиту в каждом факультете        
echo("<li>$fio</li><br>");
  }

}

?>

Последний раз редактировалось akokin; 09.01.2010 в 17:51. Причина: уточнение
akokin вне форума Ответить с цитированием
Старый 09.01.2010, 18:07   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Код:
//выводим название факультета 
    echo("<b>$key</b>\n"."\n");
Помоему вы выводите индекс массива

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 09.01.2010, 18:09   #3
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

Потому что в данном случае название факультета является ключом. И мне нужно вывести название факультета, а в нем список преподавателей, отортированный по алфавиту.
Спасибо.

Последний раз редактировалось akokin; 09.01.2010 в 18:14.
akokin вне форума Ответить с цитированием
Старый 09.01.2010, 18:14   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Извиняюсь в строках
Код:
//выводим название факультета 
    echo("<b>$key</b>\n"."\n");
все правильно, а
Код:
foreach($teacher as $fio => $status) 
    { 
//выводим список преподавателей по алфавиту в каждом факультете         
echo("<li>$fio</li><br>"); 
  }
...
Вы даже не сортируете имена, выводите их "От фонаря". Попробуйте реализовать цикл сортировки.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 09.01.2010, 18:20   #5
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

Верно, не сортирую, ибо как не пытался - не проходит. Потому что еще и не соображу, как же сортировать двумерный массив.
Если с простым массивом все ясно (sort($масив)), то как быть в моем случае - не нахожу решения. Потому и спрашиваю.
akokin вне форума Ответить с цитированием
Старый 09.01.2010, 18:26   #6
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

(sort($масив)) не поможет так как сортируем кирилицу. Если в голову что-нибуть прийдет(код) сообщу.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 09.01.2010, 19:11   #7
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

Решено.
С кириллицей работает нормально asort.
akokin вне форума Ответить с цитированием
Старый 09.01.2010, 19:12   #8
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
По умолчанию

если правильно понял ,то

Код:
function daNuNa($massiv,$whatwewant='up',$level=0){

            if(count($massiv)>0){
                switch($whatwewant){
                    case 'down':
                        krsort($massiv);
                        break;
                    default :
                        ksort($massiv);
                        break;
                    
                }
                   reset($massiv);
                   
                   foreach($massiv as $key=>$mk){
                        echo '<div style="margin-left:'.(2*$level).'em">'.$key.'=>'.$mk.'</div>';
                        if(count($mk)>0 && is_array($mk)){
                            daNuNa($mk,$whatwewant,($level+1));    
                        }
                   }
                   /*
                   echo '<pre>';
                   print_r($massiv);
                   echo '</pre>';*/
            }

	}
	
	
	$fruits = array("d" => "lemon", "a" => "orange", "b" => array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"), "c" => "apple");
	
	daNuNa($fruits);
можно не выводить на печать массив , а заморочиться и поробовать возвратить готовый отсортированный массив
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Старый 10.01.2010, 12:32   #9
akokin
Пользователь
 
Регистрация: 02.08.2008
Сообщений: 94
По умолчанию

13-й, спасибо. Ваш код интересен для меня с точки зрения изучения PHP. Хотя в моем случае он излишен (все таки простое задание, чтобы для него писать функцию), но я благодарен вам.
akokin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отсортировать по авторам B@R@B@$HK@ Общие вопросы C/C++ 4 31.05.2009 02:05
помогите отсортировать значения по параметрам malenro84 Microsoft Office Excel 1 05.05.2009 23:59
как отсортировать массив под данный отрезок и как минимум и максимум из него найти SIEGER Паскаль, Turbo Pascal, PascalABC.NET 1 20.11.2008 08:58
сортировка в многомерном массиве LeoN PHP 8 03.06.2008 15:39
Как отсортировать Uhryap Microsoft Office Word 2 24.02.2007 16:58