Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отсротировать весь массив по одному ключу.
 
 автор: Atom   (19.08.2005 в 12:33)   письмо автору
 
 

Пример.

$i=1;
while($res = mysql_fetch_array($res_q))
{
   $arr['price'][$i] = $res['price'];
   $arr['id'][$i] = $res['id'];
   $arr['name'][$i] = $res['name'];
   $i++;
}
for($a=1; $a<=5; $a++)
{
   echo $arr['name'][$a], $arr['price'][$a], $arr['id'][$a];
}

Мне нужно отсортировать массив по ключу price, но при этом должны отсортироваться в том же порядке, что и price, name и id.

   
 
 автор: Axxil   (19.08.2005 в 12:40)   письмо автору
 
   для: Atom   (19.08.2005 в 12:33)
 

Может поможет такая функция?

<?
  
function _array_multisort_db_cmp($a$b) {
    return 
strnatcasecmp($a[SORT_KEY], $b[SORT_KEY])*SORT_TYPE==SORT_ASC : -1);
 }
 function 
array_multisort_db($a$key$order) {
    
define('SORT_KEY'$key);
    
define('SORT_TYPE'$order);
    
usort($a'_array_multisort_db_cmp');
    return 
$a;
  }
//$a - массив
//$key -столбец для сортировки
//$order - SORT_ASC, SORT_DESC
?>


То есть массив сорируется как таблица БД

PS Где взял не помню. Так что если чьё-то, извиняйте что не сослался :)

   
 
 автор: Atom   (19.08.2005 в 14:36)   письмо автору
 
   для: Axxil   (19.08.2005 в 12:40)
 

Что-то не работает функция...

   
 
 автор: Axxil   (19.08.2005 в 14:59)   письмо автору
 
   для: Atom   (19.08.2005 в 14:36)
 

А что конкретно не работает?

   
 
 автор: Atom   (19.08.2005 в 15:10)   письмо автору
 
   для: Axxil   (19.08.2005 в 14:59)
 

1. Лишняя скобка
2. Просто не работает :)

   
 
 автор: Axxil   (19.08.2005 в 15:13)   письмо автору
 
   для: Atom   (19.08.2005 в 15:10)
 

Не, ну лишняя скобка фиг с ней.
function _array_multisort_db_cmp($a, $b) { 
    return strnatcasecmp($a[SORT_KEY], $b[SORT_KEY])*(SORT_TYPE==SORT_ASC ? 1 : -1); 


А чё пишет? Всмысле не сортирует?

   
 
 автор: Atom   (19.08.2005 в 15:39)   письмо автору
 
   для: Axxil   (19.08.2005 в 15:13)
 

Я потом в цикле for вывожу эти значения, а их нет. Пишет не определен индекс такой-та.

   
 
 автор: Axxil   (19.08.2005 в 15:46)   письмо автору
 
   для: Atom   (19.08.2005 в 15:39)
 

А можно взглянуть на текст ошибки?

   
 
 автор: Atom   (19.08.2005 в 16:35)   письмо автору
 
   для: Axxil   (19.08.2005 в 15:46)
 

Говорю же, не определен индекс, который хочу вывести. Но до использования функции он был определен.

   
 
 автор: Axxil   (19.08.2005 в 17:22)   письмо автору
 
   для: Atom   (19.08.2005 в 16:35)
 

Вспомнил где взял:
посмотрите пример использования. У меня великолепно работает. Если так ничего и не получится пишите будем разбираться...


[url]http://forum.dklab.ru/php/advises/SortingOfABidimentionalAssociativeF ileOnStructureSimilarToTheTableOfAD b.html[/url]

Чё-то BB-код глючит :(

   
 
 автор: Atom   (19.08.2005 в 19:45)   письмо автору
 
   для: Axxil   (19.08.2005 в 17:22)
 

Пишет такой темы нет :(

   
 
 автор: Axxil   (20.08.2005 в 10:22)   письмо автору
 
   для: Atom   (19.08.2005 в 19:45)
 

Блин...
Короче на этой странице 5 тема снизу "Сортировка двумерного ассоциативного массива, по структуре похожего на таблицу БД "
(Вот технологии... Надо кстати обратить внимание администрации)

   
 
 автор: cheops   (20.08.2005 в 12:52)   письмо автору
 
   для: Atom   (19.08.2005 в 19:45)
 

Пробелы уберите из URL - просто сработала защита...

   
 
 автор: Axxil   (20.08.2005 в 12:55)   письмо автору
 
   для: cheops   (20.08.2005 в 12:52)
 

так вот именно что я копировал прям из адрессной строки браузера. Никаких пробелов самолично не добавлял естественно... Почему так произошло тогда?
Эта последняя буква сама убегает :)

   
 
 автор: cheops   (20.08.2005 в 13:13)   письмо автору
 
   для: Axxil   (20.08.2005 в 12:55)
 

Это для того, чтобы очень длинной строкой нельзя было нарушить дизайн форума.

   
 
 автор: Atom   (20.08.2005 в 13:40)   письмо автору
 
   для: cheops   (20.08.2005 в 13:13)
 

Неправильно как-то эта функция сортирует... Первым оказывается не самое маленькое число в массиве...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования