Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Пн Окт 09 2006 10:58 Заголовок сообщения: сортировка массива в php |
|
|
Положим есть массив:
Код: | $par_Array[0]["id"] = 4;
$par_Array[0]["name"] = "огурец";
$par_Array[0]["color"] = "green";
$par_Array[1]["id"] = 6;
$par_Array[1]["name"] = "помидор";
$par_Array[1]["color"] = "red";
$par_Array[2]["id"] = 5;
$par_Array[2]["name"] = "капуста";
$par_Array[2]["color"] = "white"; |
вопрос, - есть ли стандартная функция php, способная отсортировать массив по полю, пусть по color. |
|
Вернуться к началу |
|
|
Neeoon
Зарегистрирован: 19.11.2004 Сообщения: 173 Откуда: Ukraine
|
Добавлено: Пн Окт 09 2006 12:57 Заголовок сообщения: |
|
|
попробуй функцию array_multisort(); _________________ Всё, что ни делается, - всё к лучшему! |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Ср Окт 18 2006 13:58 Заголовок сообщения: |
|
|
пробую:
Код: | $l_Array[0]["a"] = "9";
$l_Array[1]["a"] = "1";
$l_Array[2]["a"] = "3";
$l_Array[3]["a"] = "5";
$l_Array[4]["a"] = "7";
$l_Array[5]["a"] = "2";
$l_Array[0]["b"] = "wer9";
$l_Array[1]["b"] = "gdf1";
$l_Array[2]["b"] = "hfd3";
$l_Array[3]["b"] = "bvc5";
$l_Array[4]["b"] = "xcv6";
$l_Array[5]["b"] = "bxcv2";
array_multisort( $l_Array );
print_r( $l_Array ); |
массив сортируется по первому полю, - то есть по полю "а". Как отсортировать по полю "b" не смог понять. |
|
Вернуться к началу |
|
|
Neeoon
Зарегистрирован: 19.11.2004 Сообщения: 173 Откуда: Ukraine
|
Добавлено: Ср Окт 18 2006 14:26 Заголовок сообщения: |
|
|
Попробуй поля поменять местами
тоесть:
Цитата: |
$l_Array[0]["b"] = "wer9";
$l_Array[1]["b"] = "gdf1";
$l_Array[2]["b"] = "hfd3";
$l_Array[3]["b"] = "bvc5";
$l_Array[4]["b"] = "xcv6";
$l_Array[5]["b"] = "bxcv2";
$l_Array[0]["a"] = "9";
$l_Array[1]["a"] = "1";
$l_Array[2]["a"] = "3";
$l_Array[3]["a"] = "5";
$l_Array[4]["a"] = "7";
$l_Array[5]["a"] = "2";
|
_________________ Всё, что ни делается, - всё к лучшему! |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Чт Окт 19 2006 09:58 Заголовок сообщения: |
|
|
нет, это не то. я привёл экстра частный пример.
Пусть массив выводится в виде таблицы. И у таблицы кнопки, которые должны позволять сортировать массив по произвольному полю... А полей в таблице множество. И что тогда? |
|
Вернуться к началу |
|
|
Neeoon
Зарегистрирован: 19.11.2004 Сообщения: 173 Откуда: Ukraine
|
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Чт Окт 19 2006 13:37 Заголовок сообщения: |
|
|
Neeoon, нет, извени, снова не катит.
Сортировка нужна именно средствами PHP. |
|
Вернуться к началу |
|
|
kocherman
Зарегистрирован: 06.01.2006 Сообщения: 88 Откуда: Обнинск
|
Добавлено: Чт Окт 19 2006 16:33 Заголовок сообщения: |
|
|
попробуй написать сортировку влоб и сам... и побуквенно, я так писал на Си для доса... у меня на это ушло время 30 минут. это занимает в 100 раз меньше времени, чем то время, которое ты потратишь в поисках стандартной функции... |
|
Вернуться к началу |
|
|
Neeoon
Зарегистрирован: 19.11.2004 Сообщения: 173 Откуда: Ukraine
|
Добавлено: Чт Окт 19 2006 22:45 Заголовок сообщения: |
|
|
Цитата: |
$l_Array[0]["a"] = "9";
$l_Array[1]["a"] = "1";
$l_Array[2]["a"] = "3";
$l_Array[3]["a"] = "5";
$l_Array[4]["a"] = "7";
$l_Array[5]["a"] = "2";
$l_Array[0]["b"] = "wer9";
$l_Array[1]["b"] = "gdf1";
$l_Array[2]["b"] = "hfd3";
$l_Array[3]["b"] = "bvc5";
$l_Array[4]["b"] = "xcv6";
$l_Array[5]["b"] = "bxcv2";
//print_r( $l_Array );
foreach ($l_Array as $key => $val) {
$arr_a[$key]=$val["a"];
$arr_b[$key]=$val["b"];
}
asort($arr_b);
foreach ($arr_b as $key => $val) {
$Array[$val]["a"] = $arr_a[$key];
$Array[$val]["b"] = $val;
}
print_r($Array);
|
Щас сортировка по полю "b"
Для сортировки по полю "а", надо поменять выделеные масивы местами _________________ Всё, что ни делается, - всё к лучшему! |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Пт Окт 20 2006 09:47 Заголовок сообщения: |
|
|
kocherman писал(а): | попробуй написать сортировку влоб и сам...
это занимает в 100 раз меньше времени, чем то время, которое ты потратишь в поисках стандартной функции... |
у меня давно есть такая функция.
только вот мучает вопрос, - есть ли стандартная. |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Пт Окт 20 2006 10:11 Заголовок сообщения: |
|
|
пока более всего порадовало такое решение:
Код: | function cmp($a, $b)
{
global $column;
return strcmp($a[$column], $b[$column]);
}
global $column;
$column = "b";
usort($l_Array, "cmp");
print_r( $l_Array ); |
|
|
Вернуться к началу |
|
|
|