[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка массива по подстроке
LRCenter
Здравствуйте, есть массив, сортирую его по алфавиту.


$arr = array("2dfg;63gf2;fgg4;423", "ase;1fse;few7;ewl5", "3weq;qeas4;qwry;k24q", "h3qwd;3eq2;84g21;23wsa","5sdk2;wur3;jiq7;xu47");
sort($arr);


Подскажите как отсортировать элементы, например, по третьей подстроке, отделенной ";"?



Спустя 6 минут, 54 секунды (3.06.2010 - 13:04) sergeiss написал(а):
Из хэлпа:
Цитата
Описание
bool usort ( array &$array , callback $cmp_function )
Эта функция сортирует элементы массива, используя для сравнения значений пользовательскую функцию. Если вам нужно отсортировать массив по необычному критерию, вы должны использовать эту функцию.

Спустя 8 минут, 57 секунд (3.06.2010 - 13:13) LRCenter написал(а):
Спасибо большое!

А сортировка будет по возрастанию или убыванию?

Спустя 1 минута, 13 секунд (3.06.2010 - 13:14) DedMorozzz написал(а):
Не ну кашмар smile.gif В гугле "пхп работа с массивами" и есть ВСЕ функции для работы с массивами

Спустя 6 минут, 23 секунды (3.06.2010 - 13:20) LRCenter написал(а):
Да ладно вам)
Как в обратном порядке-то отсортировать, в справочнике нет функции, сортирующей как usort, только в обратном порядке.

Спустя 8 минут, 43 секунды (3.06.2010 - 13:29) DedMorozzz написал(а):

Спустя 26 минут, 6 секунд (3.06.2010 - 13:55) sergeiss написал(а):
Цитата (LRCenter @ 3.06.2010 - 14:13)
А сортировка будет по возрастанию или убыванию?

Ты вот эту часть читал?
Цитата
Эта функция сортирует элементы массива, используя для сравнения значений пользовательскую функцию.


Более полное описание функции нашел? Думать пробовал, в частности, что делает пользовательская функция?

Спустя 1 час, 22 минуты, 41 секунда (3.06.2010 - 15:18) LRCenter написал(а):
Допустим я читаю csv в двумерный массив:
$fd = fopen("test.csv", "r");
while (($arr = fgetcsv($fd, 1024, ";")) !== FALSE) {
$data[] = $arr;
}
fclose($fd);


test.csv имеет содержимое:
2dfg;63gf2;fgg4;eji5
ase;1fse;afew7;223j
3weq;qeas4;qwry;3jdu
h3qwd;3eq2;84g21;2udn
5sdk2;wur3;jiq7;38dn5




В справочнике используют пример:

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

$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";

usort($fruits, "cmp");

while (list($key, $value) = each($fruits)) {
echo "\$fruits[$key]: " . $value["fruit"] . "
"
;
}


Но тут все пространство вложенного массива(строки) имеет имена столбцов, а как обратиться к нужному для сортировки столбцу в моем массиве?

Спустя 11 минут, 40 секунд (3.06.2010 - 15:29) sergeiss написал(а):
М-да... Ты на форуме зарегистрирован уже более 2-х лет. А ты его читаешь хоть иногда? А хэлпы читаешь? wink.gif

Вот в этой функции, которая сравнивает, используй функцию explode (дважды, по разу для каждой строки!!!), чтобы выцепить нужный элемент. И сравнивай нужные тебе элементы строки.

Спустя 23 минуты, 39 секунд (3.06.2010 - 15:53) LRCenter написал(а):
Ну, я же не супер-мега спец, мне простительно smile.gif
Так прикалываюсь на детском уровне иногда, интересно.
Так я ничего и не понял, но все равно спасибо, пойду еще пояндексю laugh.gif

Спустя 31 минута, 22 секунды (3.06.2010 - 16:24) sergeiss написал(а):
Цитата (LRCenter @ 3.06.2010 - 16:53)
Так прикалываюсь на детском уровне иногда, интересно.

Давай я тоже приколюсь, тему закрою smile.gif А ты иди "пояндекси" и "погугли", все данные у тебя есть.


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.