За последние 24 часа нас посетили 16079 программистов и 1666 роботов. Сейчас ищут 936 программистов ...

сортировка многомерного массисва

Тема в разделе "PHP для новичков", создана пользователем Narkoman, 6 фев 2008.

  1. Narkoman

    Narkoman Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    3
    Симпатии:
    0
    подскажите как по проще отсортировать двумерный массив по 2 индексу ???

    изночальный массив :

    $mass[0][key] = 2;
    $mass[1][key] = 1;
    $mass[2][key] = 5;
    $mass[3][key] = 10;

    надо отсортировать чтоб было :

    $mass[0][key] = 1;
    $mass[1][key] = 2;
    $mass[2][key] = 5;
    $mass[3][key] = 10;
     
  2. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Раз вот это - sort($mass[key]) не работает, и даже вот это - array_multisort не помогает, то остаётся только писать самому.

    я бы сделал так - выгрузил все значения во временный массив, натравил бы sort и загрузил бы обратно.
     
  3. Narkoman

    Narkoman Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    3
    Симпатии:
    0
    sort($mass[key]) и array_multisort я пробовал но мне нада по 2 ключу сортировать

    а вот вариант с временным массивом неплохой, попробую, спасибо !
     
  4. Narkoman

    Narkoman Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    3
    Симпатии:
    0
    вопщим так делаем из етого :

    $mass[0][name] = "two";
    $mass[0][number] = 2;
    $mass[1][name] = "one";
    $mass[1][number] = 1;
    $mass[2][name] = "seven";
    $mass[2][number] = 7;
    $mass[3][name] = "zero";
    $mass[3][number] = 0;

    ето :

    $mass[0][name] = "zero";
    $mass[0][number] = 0;
    $mass[1][name] = "one";
    $mass[1][number] = 1;
    $mass[2][name] = "two";
    $mass[2][number] = 2;
    $mass[3][name] = "seven";
    $mass[3][number] = 7;

    вот попробывал так
    PHP:
    1.  
    2. $mass[0][name] = "two";
    3. $mass[0][number] = 2;
    4. $mass[1][name] = "one";
    5. $mass[1][number] = 1;
    6. $mass[2][name] = "seven";
    7. $mass[2][number] = 7;
    8. $mass[3][name] = "zero";
    9. $mass[3][number] = 0;
    10.  
    11. $i = 0;
    12.     while ( $i <= (count($mass)-1) ){
    13.          $j = 0;
    14.          while ( $j <= (count($mass)-2) ){
    15.              if($mass[$j]["number"]>$mass[$j+1]["number"])
    16.              {
    17.                   $temp=$mass[$j];
    18.                   $mass[$j]=$mass[$j+1];
    19.                   $mass[$j+1]=$temp;
    20.              }
    21.              $j++;
    22.          }
    23.          $i++;
    24.      }
    25. print_r($mass);
    26.  
    результат :
    Array
    (
    [0] => Array
    (
    [name] => zero
    [number] => 0
    )

    [1] => Array
    (
    [name] => one
    [number] => 1
    )

    [2] => Array
    (
    [name] => two
    [number] => 2
    )

    [3] => Array
    (
    [name] => seven
    [number] => 7
    )

    )

    КАК МОЖНО УПРОСТИТЬ ?
     
  5. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0