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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка двумерного массива

Сообщения:  [1-10]   [11-14] 

 
 автор: hammet   (07.05.2007 в 13:37)   письмо автору
 
   для: Trianon   (07.05.2007 в 13:19)
 

Спасибо большое :)

Надеюсь это будет хороший урок для меня!

   
 
 автор: Trianon   (07.05.2007 в 13:19)   письмо автору
 
   для: hammet   (07.05.2007 в 13:13)
 

>возвращает почти то что нужно, только наоборот) т.е. по возрастанию :)
>можно конечно array_revers,

а можно и return $rb[7] - $ra[7];

   
 
 автор: hammet   (07.05.2007 в 13:13)   письмо автору
 
   для: Trianon   (07.05.2007 в 13:02)
 


<?php
function my_cmp ($ra$rb)  { return $ra[7] - $rb[7]; }
    
usort ($listAllPoints'my_cmp');
?>


возвращает почти то что нужно, только наоборот) т.е. по возрастанию :)

можно конечно array_revers, но.....

   
 
 автор: Trianon   (07.05.2007 в 13:02)   письмо автору
 
   для: hammet   (07.05.2007 в 12:58)
 

Вы говорили о последнем столбце - для него код и набросан. Хотите для седьмого - переделайте для седьмого.

   
 
 автор: hammet   (07.05.2007 в 13:01)   письмо автору
 
   для: hammet   (07.05.2007 в 12:58)
 

вот исходный массив:


Array
(
    [0] => Array
        (
            [0] => 123
            [1] => 0
            [2] => 1
            [3] => 0
            [4] => 4
            [5] => 5
            [6] => 1
            [7] => 0
            [8] => 2
        )

    [1] => Array
        (
            [0] => test
            [1] => 0
            [2] => 0
            [3] => 1
            [4] => 1
            [5] => 1
            [6] => 1
            [7] => 1
            [8] => 4
        )

    [2] => Array
        (
            [0] => ypa
            [1] => 0
            [2] => 0
            [3] => 0
            [4] => 0
            [5] => 0
            [6] => 0
            [7] => 0
            [8] => 5
        )

    [3] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 0
            [3] => 1
            [4] => 6
            [5] => 5
            [6] => 2
            [7] => 4
            [8] => 3
        )

)


а нужно чтобы вложенные массивы [0][1][2][3] были расположены по величине элемента с адресом 7. По убыванию.
Пока результат после сортировки выглядит так:


Array
(
    [0] => Array
        (
            [0] => 123
            [1] => 0
            [2] => 1
            [3] => 0
            [4] => 4
            [5] => 5
            [6] => 1
            [7] => 0
            [8] => 2
        )

    [1] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 0
            [3] => 1
            [4] => 6
            [5] => 5
            [6] => 2
            [7] => 4
            [8] => 3
        )

    [2] => Array
        (
            [0] => test
            [1] => 0
            [2] => 0
            [3] => 1
            [4] => 1
            [5] => 1
            [6] => 1
            [7] => 1
            [8] => 4
        )

    [3] => Array
        (
            [0] => ypa
            [1] => 0
            [2] => 0
            [3] => 0
            [4] => 0
            [5] => 0
            [6] => 0
            [7] => 0
            [8] => 5
        )

   
 
 автор: hammet   (07.05.2007 в 12:58)   письмо автору
 
   для: Trianon   (07.05.2007 в 12:31)
 

получаем 0,4,1,0 :(

   
 
 автор: Trianon   (07.05.2007 в 12:31)   письмо автору
 
   для: Trianon   (07.05.2007 в 12:28)
 

Тьфу блин.... совсем плохой стал....

<?php  
function my_cmp ($ra$rb)  { return $ra[count($ra)-1] - $rb[count($rb)-1]; }
usort ($listAllPoints'my_cmp');  
?>  

   
 
 автор: Trianon   (07.05.2007 в 12:28)   письмо автору
 
   для: hammet   (07.05.2007 в 11:58)
 


<?php 
function my_cmp ($ra$rb

  
$a $ra[count($ra)-1];
  
$b $rb[count($rb)-1];
  return (
$a $b) ? -: ($a $b); 


usort ($listAllPoints'my_cmp'); 
?> 

   
 
 автор: hammet   (07.05.2007 в 12:25)   письмо автору
 
   для: bronenos   (07.05.2007 в 12:20)
 

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

   
 
 автор: bronenos   (07.05.2007 в 12:20)   письмо автору
 
   для: hammet   (07.05.2007 в 11:58)
 

Не знаю, как он будет вести себя с цифрами...
<?php
function like ($a$b)
{
  if (
$a == $b) return 0;
  return (
$a $b) ? -1;
}

foreach (
$listAllPoints as $k=>$v)
  
usort ($listAllPoints'like');
?>

не проверял, сразу скажу

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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