За последние 24 часа нас посетили 18879 программистов и 1623 робота. Сейчас ищет 931 программист ...

сортировка массива

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

  1. sey

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

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    имеется массив: array(array(1, 0, 'cat1'), array(2, 0, 'cat2'), array(3, 2, 'subcat1'), array(4, 1, 'subcat2'),);
    array(1, 0, 'cat1') - 1 ид категорий, 0 - ид субкатегорий(0 - домашняя категория), cat1 - имя категорий. нужно отсортировать массив таким образом, чтобы бы соотвественно все категорий и субкатегорий были последовательно. результат сортировки: array(array(1, 0, 'cat1'), array(4, 1, 'subcat2'), array(2, 0, 'cat2'), array(3, 2, 'subcat1'));
    заранее всем спасибо.
     
  2. sey

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

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    народ не кто не знает. хочу свою цмс собирать. прошу помогите.
     
  3. ShamahN

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

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    sey, ты хоть сам понял чего куда отсортировать надо? никакой "последовательности", лично, пронаблюдать не могу. Может если курнуть... :)
    жаль нечего...
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    проще сразу сформировать как надо...
    как формируешь массив?
    код в студию...
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ShamahN
    та не, у него походу обычная рекурсивная структура каталогов...
     
  6. sey

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

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    id | parent_id | name
    1 | 0 | cat1
    2 | 0 | cat2
    3 | 1 | sub_cat1
    4 | 3 | sub_sub_cat1
    5 | 2 | sub_cat2
    6 | 0 | cat3
    7 | 1 | sub_cat1

    после сортировки:

    id | parent_id | name
    1 | 0 | cat1
    3 | 1 | sub_cat1
    4 | 3 | sub_sub_cat1
    7 | 1 | sub_cat1
    2 | 0 | cat2
    5 | 2 | sub_cat2
    6 | 0 | cat3
     
  7. sey

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

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    т.е. в бд есть категорий и подкатегорий(id - id категорий, parent_id - id родительской категорий, name - имя). нужно получить отсортированный массив как показано в примере.
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    PHP:
    1. <?
    2. $sql=mysql_query("SELECT * FROM `cats` ORDER BY `id`");
    3. $arr=array();
    4. while($row=mysql_fetch_assoc($sql)) {
    5.        $arr[]=$row;
    6. }
    7. function sort_cat($arr,$id=0) {
    8.     $res=array();
    9.     foreach($arr as $val) {
    10.          if ($val['parent_id']==$id) {
    11.             $res[]=$val;
    12.             $res=array_merge($res,sort_cat($arr,$val['id']));
    13.          }
    14.    }
    15.  return $res;
    16. }
    17.  
    18. $arr=sort_cat($arr);
    19. ?>
    20.  
    наверно можно сделать проще ;)
     
  9. sey

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

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    Mr.M.I.T. да да, спасибо вам и всем.
     
  10. ShamahN

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

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Mr.M.I.T., ааа :)