Сортировка данных из файла

Grapefruit Lips

Новичок
Сортировка данных из файла

Файл baza.txt:

25232|yes|Катлеты салёные|text664
53235|yes|Абрикосы японские|text464
13245|yes|Брокали вьетнамские|text36

Как мне вывести эти данные, что бы сортировка по алвавиту была по 2-му ключу?

т.е надо, что бы выводилось так:

Абрикосы японские
Брокали вьетнамские
Каклеты салёные

Как производить сортировку?
 

Grapefruit Lips

Новичок
ну file то само собой, но вот как приминить к данной ситуации функцию usort я не понимаю =(
 

uliss

Новичок
Нужно написать свою функцию сортировки - она принимает 2 параметра - выдели подстроку из каждого элемента массива
 

Grapefruit Lips

Новичок
маммочки . свою функцию????
я не понимаю, что значит *она принимает 2 параметра* , где это прописать?

function cmp($a, $b)
{
return strcmp($a["fruit"], $b["fruit"]);
}

$a и $b это эти два параметра?

и как выделить подстроку каждого элемента?
 

uliss

Новичок
PHP:
function cmp($a,$b){
    if(substr($a,10) == substr($a,10) return 0;
    return (substr($a,10) > substr($b,10)) ? -1 : 1;
}
 

Grapefruit Lips

Новичок
всё равно не то, видимо я непарвильно вывожу или вообще непонимаю чё происходит, завтра попробую, спасиба!
 

Хам

Новичок
короче...
читаешь файл посторочно в масив....
масив будет выглядеть вот так:
$file[0] "25232|yes|Катлеты салёные|text664"
........
$file[n] "13245|yes|Брокали вьетнамские|text36"

делаешь split $file[n] строки относительно "|"...
потом меняешь местами в полученном масиве (после каждого split) ячейки "Брокали вьетнамские" и "13245"...
Дабы ячейки содержащие название стали первыми... потом ентот масив преобразуешь в строку со своими разделителями "|"...
далее уже получившийся заново масив $file, где будет:

$file[0] "Катлеты салёные|25232|yes|text664"
........
$file[n] "Брокали вьетнамские|13245|yes|text36"

сортируешь usort($file,"strnatcmp");
 

uliss

Новичок
Хам
В этом случае уже не нужен usort(), можно обойтись "обычным" sort
 

Grapefruit Lips

Новичок
люди спасибо, я кажется разобрался

PHP:
 if (!function_exists('sortcmp')) {
 function sortcmp($a, $b) {

 $file_a = explode('|', $file[$a]);
 $file_b = explode('|', $file[$b]);

  return strnatcasecmp($file_a[2], $file_b[2]);
 }
}
uksort($file, 'sortcmp');
где 2 - это второй ключ массива, т.е там, где в данном случае русские буквы
соответственно можно сортировать по любому полю
 
Сверху