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

Форум PHP

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

 

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

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

тема: Как упорядочить двумерный массив?
 
 автор: Владимир55   (23.10.2007 в 12:53)   письмо автору
 
 

Есть массив такого вида со случайно расположенными строками:

$i = 1 $dn[$i] = 7 $za[$i] = 2
$i = 2 $dn[$i] = 3 $za[$i] = 9
$i = 3 $dn[$i] = 9 $za[$i] = 1
$i = 4 $dn[$i] = 2 $za[$i] = 8
$i = 5 $dn[$i] = 4 $za[$i] = 3

Как можно упорядочить этот массив по содержимому $dn, разместив его строки в порядке возрастания имеющегося в этой переменной числа?

Чтобы получилось так:

$i = 1 $dn[$i] = 2 $za[$i] = 8
$i = 2 $dn[$i] = 3 $za[$i] = 9
$i = 3 $dn[$i] = 4 $za[$i] = 3
$i = 4 $dn[$i] = 7 $za[$i] = 2
$i = 5 $dn[$i] = 9 $za[$i] = 1

   
 
 автор: kasmanaft   (23.10.2007 в 14:06)   письмо автору
 
   для: Владимир55   (23.10.2007 в 12:53)
 

Что-то не очень понятно.. Как этот массив выглядит на PHP?
Прямо в коде.. или print_r().

Если это строки, то почему Вы говорите, что массив двумерный?

   
 
 автор: Владимир55   (23.10.2007 в 14:52)   письмо автору
 
   для: kasmanaft   (23.10.2007 в 14:06)
 

Этот массив образуется, когда я перебираю все подряд файлы в папке.
$i – это просто условный номер очередного извлекаемого файла. Извлекли первый файл - $i =1, второй файл - $i=2, и т.д.
$dn – это число, формируемое мною из названия извлеченного файла
$za – это число, записанное в этом же извлеченном файле

Каждая из переменных $dn[$i] и $za[$i] формируется поочередно, но их совокупность образует массив.
Может быть, правильнее говорить не о двумерном массиве, а о двух связанных массивах.

   
 
 автор: Drago   (23.10.2007 в 17:51)   письмо автору
 
   для: Владимир55   (23.10.2007 в 14:52)
 

Возможно вам помогут функции sort() и rsort().
Плюс подправить индексы массивов, увеличить на еденицу.

   
 
 автор: stasmus   (23.10.2007 в 18:32)   письмо автору
 
   для: Drago   (23.10.2007 в 17:51)
 

я бы наверно так сдела


for ($i=1;$i<=count($dn);$i++)
{
   if($i<count($dn))
   {
    if($dn[$i]>$dn[$i+1])
{
$tm=$dn[$i];
$dn[$i]=$dn[$i+1];
$dn[$i+1]=$tm;
//тут же делаем za
}
   }

}

вроде должно прокатить

   
 
 автор: kasmanaft   (24.10.2007 в 13:15)   письмо автору
 
   для: Владимир55   (23.10.2007 в 14:52)
 

Попробуйте вот так:

$arr = array( . . . . );
function arr_sort($a, $b) {
    return ($a[1] - $b[1]);
}
usort(&$arr, "arr_sort");

Нулевой элемент ($i) вообще не нужен... Так что должно подойти.
Или Вы их в примере упорядочить забыли?

   
Rambler's Top100
вверх

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