Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сортировка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
IGORtrue
Отправлено: 14 Августа, 2012 - 21:49:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Как отсортировать массив по значению, сохранив ключ=>значение.
sort() не подходит
asort() не работает вообще
ksort() не подходит

Упорядочивание выполняется после сортировки так:
Цитата:

for($x=0; $x<=$count; $x++) {$key = array_search($arr[$x], $arr, true);
echo '<br>'.$arr[$x].'-'.$key;
 
 Top
Hawkmoth
Отправлено: 14 Августа, 2012 - 22:01:10
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




а чем asort не подходит?
 
 Top
IGORtrue
Отправлено: 14 Августа, 2012 - 22:03:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Она не работает вообще, функция идеальна для меня.
Нашёл даже какуе-то заметку про это.._webaurum.blogspot.com/2009 /01/asort-sortnumeric-with-non-n umeric.html
 
 Top
Hawkmoth
Отправлено: 14 Августа, 2012 - 22:15:28
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




Забавно. А у меня все работает. В том числе и с примером, указанным в статье.
Дайте пример массива и объясните, как вы его хотите отсортировать.
 
 Top
IGORtrue
Отправлено: 14 Августа, 2012 - 22:19:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Цитата:

for($x=0; $x<=$count; $x++) {$pieces = explode("-:.:-", $ar[$x]);
$arr[$x]=$pieces[4];
echo $arr[$x].'<br>';
}
//сортировка
...
//сортировка конец

for($x=0; $x<=$count; $x++) {$key = array_search($arr[$x], $arr, true);
echo '<br>'.$arr[$x].'-'.$key;
}

Массив типа:
1=>45
2=>34
3=>98
Нужно упорядочить значения с сохранением ключа, потом ключи, по порядку занести в отдельный массив.
 
 Top
Hawkmoth
Отправлено: 14 Августа, 2012 - 22:26:31
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




IGORtrue пишет:
Нужно упорядочить значения с сохранением ключа, потом ключи, по порядку занести в отдельный массив.

PHP:
скопировать код в буфер обмена
  1. $array=array(45,34,26,38,57,58,71,25,34);
  2. asort($array); //Array( [7]=>25 [2]=>26 [1]=>34 [8]=>34 [3]=>38 [0]=>45 [4]=>57 [5]=>58 [6]=>71)
  3. $keys=array_keys($array); //Array ([0]=>7 [1]=>2 [2]=>1 [3]=>8 [4]=>3 [5]=>0 [6]=>4 [7]=>5 [8]=>6 )

Что означает - "по порядку"? По порядку следования значений в отсортированном массиве или по возрастанию ключей в массиве ключей?

(Отредактировано автором: 14 Августа, 2012 - 22:28:22)

 
 Top
IGORtrue
Отправлено: 14 Августа, 2012 - 22:39:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Не понятно, но интересно.
Цитата:

asort($arr);
array_keys($arr);
$arr=array_keys ($arr);
for($x=0; $x<=$count; $x++) {echo '<br>'.$arr[$x];

Работает так. Но всё таки применение asort и последующий вывод не приносит результатов. А после array_keys всё как по часам. Спасибо большое.
 
 Top
Hawkmoth
Отправлено: 14 Августа, 2012 - 22:42:18
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




IGORtrue пишет:
for($x=0; $x<=$count; $x++) {echo '<br>'.$arr[$x];

Я б на вашем месте на foreach внимание обратил.
 
 Top
IGORtrue
Отправлено: 14 Августа, 2012 - 22:48:20
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Хорошо, изучу. Подскажите, мне нужно выводить ТОП по скачиваниям на главную, ведь инициализировать скрипт сортировки при каждом обновлении страницы плохо? как лучше сделать?
 
 Top
KingStar
Отправлено: 14 Августа, 2012 - 22:55:30
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




а откуда значения берутся??? из БД ??? код плиз...


-----
То что программа работает, не означает что она написана правильно!
 
 Top
IGORtrue
Отправлено: 14 Августа, 2012 - 22:56:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Ах) из бд, ага)
Цитата:
$ar=file("bd");


Правда, до мускула мой мозг ещё не дорос)

(Отредактировано автором: 14 Августа, 2012 - 23:04:41)

 
 Top
KingStar
Отправлено: 14 Августа, 2012 - 23:04:29
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




ну тогда 2 варианта, либо сортировать при генерации страницы, либо пересортировывать при скачивании и пересохранять файл


-----
То что программа работает, не означает что она написана правильно!
 
 Top
IGORtrue
Отправлено: 14 Августа, 2012 - 23:05:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Цитата:
ну тогда 2 варианта, либо сортировать при генерации страницы, либо пересортировывать при скачивании и пересохранять файл

О, про второй вариант я даже и не додумался. Спасибо большое.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB