За последние 24 часа нас посетили 51346 программистов и 1758 роботов. Сейчас ищут 719 программистов ...

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

Тема в разделе "Прочие вопросы по PHP", создана пользователем WebStrannik, 25 сен 2015.

  1. WebStrannik

    WebStrannik Новичок

    С нами с:
    24 сен 2015
    Сообщения:
    2
    Симпатии:
    0
    Приветствую всех, помогите решить вопрос с вынужденной сортировкой по многомерному массиву
    Имеется текстовый документ text.txt со строками вида:
    Код (Text):
    1. http://mysite1.ru/|Site Name 1|OK|5 min|5|100|text 1
    2. http://mysite2.ru/|Site Name 2|OK|7 min|7|300|text 2
    3. http://mysite3.ru/|Site Name 3|OK|6 min|6|250|text 3
    итд.. (строк там около 50)

    код:
    Код (PHP):
    1. $arr_files = file('text.txt');
    2.  
    3. foreach($arr_files as $index) {
    4.  
    5.     $source = explode("|", $index);
    6.     $arr_string[] = array($source[0],$source[1],$source[2],$source[3],$source[4],$source[5],$source[6]);
    7. }
    8.  
    9. echo '<pre>';
    10. var_dump($arr_string);
    11.  
    Вот теперь нужно отсортировать массив первого уровня по значениям [4]=> массивов второго уровня, от меньшего к большему
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Код (PHP):
    1. $arr = array_map(function($s){
    2.     return str_getcsv($s, '|');
    3. }, file('text.txt'));
    4. $col = [];
    5. foreach($arr as $k => $v) {
    6.     $col[$k] = $v[4]; 
    7. }
    8. array_multisort($col, SORT_ASC, SORT_NUMERIC, $arr);
    9.  
    10. print_r($arr); 
     
  3. WebStrannik

    WebStrannik Новичок

    С нами с:
    24 сен 2015
    Сообщения:
    2
    Симпатии:
    0
    Спасибо тебе Добрый Человек, вот так заработало:
    Код (PHP):
    1. $arr = array_map(function($s) {
    2.                     return str_getcsv($s, '|');
    3.                 }, file('text.txt')
    4.             );
    5.  
    6. $col = array();
    7.  
    8. foreach($arr as $k => $v) {
    9.     $col[$k] = $v[4]; 
    10. }
    11.  
    12. array_multisort($col, SORT_ASC, SORT_NUMERIC, $arr);
    13.  
    14. echo '<pre>';
    15. var_dump($arr);