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

Форум PHP

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

 

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

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

тема: Как отсортировать?
 
 автор: Shorr Kan   (27.01.2006 в 05:12)   письмо автору
 
 

У меня есть данные, в виде url - соответствующая цифра. Мне надо вывести сперва все те url, у котрых цифра 3 , потом все - с двоечкой, и так далее.

Понимаю, что это делается такими методами, как arsort , но закрутился что-то с многомерностью...

В общем, у меня из for появляется:
$url[$i]
$n[$i]

Сперва нужно вывести все $url[$i] , где $n[$i]==3 ... и на уменьшение.

   
 
 автор: localGhost   (27.01.2006 в 07:56)   письмо автору
 
   для: Shorr Kan   (27.01.2006 в 05:12)
 

не могли бы вы написать для наглядности пример как выглядит массив до, и как должен выглядить после

   
 
 автор: Shorr Kan   (27.01.2006 в 08:41)   письмо автору
 
   для: localGhost   (27.01.2006 в 07:56)
 

Да всё очень просто:

$url[0]="a.ru";
$url[1]="b.ru";
$url[2]="c.ru";

for($i=0;$i<3;$i++){
$num[]=rand(1,3);
}

Как мне после этого сделать так, чтобы я могу пониже вывести сперва все url , которым троечку присвоил, потом те - которым двоечку... и так далее.. ?

Ну не самим url я присвоил, конечно... а параллельному массиву, ключи которого - точно такие же, числовые... и совпадают с ключами $url

   
 
 автор: Shorr Kan   (27.01.2006 в 08:44)   письмо автору
 
   для: Shorr Kan   (27.01.2006 в 08:41)
 

Говоря проще:

$url[0]="a.ru";$num[0]=2;
$url[1]="b.ru";$num[1]=3;
$url[2]="c.ru";$num[2]=1;


Как мне теперь отсортировать ОБА массива по значениям массива $num ?

Должно выйти следующее:

b.ru - 3
a.ru - 2
c.ru - 1

   
 
 автор: localGhost   (27.01.2006 в 09:41)   письмо автору
 
   для: Shorr Kan   (27.01.2006 в 08:44)
 

<?
$url 
= array ("a.ru""b.ru""c.ru");
$num = array (231);

arsort ($num);
reset ($num);

while (list (
$key$val) = each ($num)) {
    echo 
$url[$key]." = $val\n";
}
?>

получаеться:

b.ru = 3
a.ru = 2
c.ru = 1

   
 
 автор: Shorr Kan   (27.01.2006 в 10:02)   письмо автору
 
   для: localGhost   (27.01.2006 в 09:41)
 

Примерно получается. Но если усложнить задачку...


<? 
$url 
= array ("a.ru""b.ru""c.ru""d.ru"); 
$num = array (2313); 
?>


И мне нужно вывести не адрес->цифра, а вот так:

3
b.ru
d.ru

2
a.ru

1
c.ru

Тогда как?

   
 
 автор: localGhost   (27.01.2006 в 10:14)   письмо автору
 
   для: Shorr Kan   (27.01.2006 в 10:02)
 

<?
$url 
= array ("a.ru""b.ru""c.ru""d.ru"); 
$num = array (231,3); 
arsort ($num);
reset ($num);
// записываем в промежуточный массив $arr
while (list ($key$val) = each ($num)) $arr[$val][] = $url[$key];

// выводим
while (list ($key$val) = each ($arr)) {
   echo 
$key."\n";
   
sort ($val);
   while (list (, 
$bval) = each ($val)) echo $bval."\n";
   echo 
"\n";
}
?>

поолучаеться:

3
b.ru
d.ru

2
a.ru

1
c.ru

   
 
 автор: Shorr Kan   (27.01.2006 в 10:21)   письмо автору
 
   для: localGhost   (27.01.2006 в 10:14)
 

Да. Благодарю. Ну и выкрутасы...

   
Rambler's Top100
вверх

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