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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Неправильная работа функции arsort

Сообщения:  [1-10]    [11-20]  [21-27] 

 
 автор: dump   (15.09.2009 в 20:09)   письмо автору
 
   для: dump   (15.09.2009 в 19:31)
 

А вот сейчас эта проблема разрешилась сама... Я не знаю что это было, возможно какой-то глюк... Я применил стандартное arsort($output,SORT_NUMERIC) и массив отсортировался... Спасибо вам, конечно за то, что отвечали, я узнал от вас много нового.

  Ответить  
 
 автор: cheops   (15.09.2009 в 20:06)   письмо автору
 
   для: dump   (15.09.2009 в 19:31)
 

Собственно value было приведено для примера - у вас этого члена нет - нужно использовать поле, которое идет в объекте. Перепишите лучше функцию get_yandex(), вернее одну строку
  return intval($ret[0]);

У вас на выходе будет обычный массив, который пропускайте через asort() или arsort(). У меня именно так получилось отсортировать ваши данные.

  Ответить  
 
 автор: dump   (15.09.2009 в 19:31)   письмо автору
 
   для: cheops   (15.09.2009 в 19:17)
 

Да вот я вставлял этот список:

http://scienceblog.ru/
http://scienceblog.ru/2009/04/22/5-nauchnykh-fokusov-s-vodojj/
http://dxdt.ru/
http://amp3direct.org/
http://amp3direct.org/category/raznoe/
http://cultureblog.ru/
http://cultureblog.ru/2008/12/
http://www.bloudoff.com/
http://www.bloudoff.com/labels/monography.html
http://liverss.ru/cat10/page2/feed28216/
http://liverss.ru/cat10/page2/feed28216/arch1/
http://blog.toodoo.ru/?p=1456
http://www.skuffelse.ru/
http://www.skuffelse.ru/2009/05/
http://prcy.myws.ru/sites/site/973
http://technorati.com/blogs/scienceblog.ru
http://www.internet.ru/node/9824
http://voliadis.ru/taxonomy/term/6
http://voliadis.ru/
http://scienceblog.mofuse.mobi/?page=show&type=item&f=33623&s=21272&id=3&sm=1&token=5cad744d70ed2c246d15e2d1e4876dcf
http://scienceblog.mofuse.mobi/?rk=eosnap
http://lemeshko.blogspot.com/2008/03/blog-post_22.html
http://www.niopasd.ru/
http://www.niopasd.ru/content/view/117/9/
http://www.infuture.ru/article/1195
http://window.edu.ru/window/catalog?p_mode=1&p_rid=50117&p_rubr=2.2
http://feeds2.feedburner.com/scienceblog-pod
http://pda.liverss.ru/cat10/page3/feed28216/

А запускаю этот скрипт с локалки

  Ответить  
 
 автор: cheops   (15.09.2009 в 19:17)   письмо автору
 
   для: dump   (15.09.2009 в 19:14)
 

Хорошо, как можно запустить ваш скрипт - какие домены нужно вбить в текстовую область?

  Ответить  
 
 автор: dump   (15.09.2009 в 19:14)   письмо автору
 
   для: cheops   (15.09.2009 в 19:11)
 

Дело в том , что я вынужден пользоваться функцией, которая возвращает объекты.

Вот она:

function get_yandex($url){

$ret = 'N/A';

if( substr($url,0,7) != 'http://' )
$url = 'http://' . $url;

if( $content = get_download('http://bar-navig.yandex.ru/u?ver=2&url='. urlencode($url) .'&show=1&post=0') ){

if( class_exists('SimpleXMLElement') ){
if( $xmldoc = new SimpleXMLElement($content) ){
$tcy = $xmldoc->tcy;
if( !empty($tcy) ){
$ret = $tcy['value'];
}
}
}
else{
preg_match("/value=\"(.\d*)\"/",$content,$tic);
if( !empty($tic[1]) ) $ret = $tic[1];
}
}

return $ret;

}

  Ответить  
 
 автор: cheops   (15.09.2009 в 19:11)   письмо автору
 
   для: dump   (15.09.2009 в 19:07)
 

Не понятно вот что - откуда у вас объекты берутся и почему бы просто не воспользоваться ассоциативным массивом, для которого можно применить готовые функции asort() и arsort()?

  Ответить  
 
 автор: dump   (15.09.2009 в 19:07)   письмо автору
 
   для: dump   (15.09.2009 в 19:01)
 

Может стоит применить какой-нибудь другой алгоритм сортировки такого массива? Существует ли для этого уже готовые решения?

  Ответить  
 
 автор: cheops   (15.09.2009 в 19:06)   письмо автору
 
   для: dump   (15.09.2009 в 19:01)
 

1) Попробуйте использовать uasort() вместо usort() - вам ведь нужно сохранить связь ключей?
2) Что нужно вбить в тектовую область, чтобы запустить скрипт?

  Ответить  
 
 автор: dump   (15.09.2009 в 19:01)   письмо автору
 
   для: cheops   (15.09.2009 в 18:56)
 

Да, я попробовал ваш код, но массив не сортируется.....

  Ответить  
 
 автор: cheops   (15.09.2009 в 18:56)   письмо автору
 
   для: dump   (15.09.2009 в 18:54)
 

Не совсем, скорее так
<?php
function cmp($a$b)
{
if (
intval($a->value) == intval($b->value)){
return 
0;
}
return (
intval($a->value) > intval($b->value)) ? -1;
}
usort($output"cmp");
?>

Обратите так же внимание на ошибку в написании intval() в вашем пример.

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-27] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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