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

Форум PHP

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

 

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

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

тема: Хитрое соединение трех массивов
 
 автор: P@Sol   (24.05.2006 в 15:40)   письмо автору
 
 

Есть три массива:
A = (10,20,30,40,11,21,31);
Б = (50,60,70,41,51,61,71);
В = (80,90,100,81,91,101);

нужно получить один:

Г = (10,20,30,40,50,60,70,80,90,100,11,21,31,41,51,61,71,81,91,101);

т.е. чтобы сначало были все значения, которые распологаются в массивах А,Б,В до того как произойдет скачек на меньшее значение, а потом значения, которые в массивах А,Б,В распологаются начиная от скачка на меньшее значение

реально?

   
 
 автор: margol   (24.05.2006 в 15:50)   письмо автору
 
   для: P@Sol   (24.05.2006 в 15:40)
 

Устроить проверку: оканчивается ли элемент массива на 0 (если string) или делится ли на 10 (если int).
Сначало переписать в новый массив элементы, удовлетворяющие этому условию, затем не удовлетворяющие.

   
 
 автор: P@Sol   (24.05.2006 в 16:01)   письмо автору
 
   для: margol   (24.05.2006 в 15:50)
 

может быть (10,13,15,9,10,11)

   
 
 автор: margol   (24.05.2006 в 16:04)   письмо автору
 
   для: P@Sol   (24.05.2006 в 16:01)
 

Честно говоря не поняла, что там у вас за скачок на меньшее значение, опишите правило :-)

   
 
 автор: P@Sol   (24.05.2006 в 16:16)   письмо автору
 
   для: margol   (24.05.2006 в 16:04)
 

сначало идут цыфры до, потом после, но они находятся на разных страницах, я их считываю в массивы
Страница 1

1 | 10 | 11
2 | 20 | 21
3 | 33 | 39
4 | 40 | 41

массив получается А

Страница 2

1 | 50 | 51
2 | 60 | 70
3 | 70 | 71

массив Б

Страница 3

1 | 80  | 72
2 | 90  | 80
3 | 100 | 90

массив В

а мне нужен массив, где сначало все цыфры до, а потом после

p.s. второй столбец всегда начинается с меньшей цыфры, чем заканчивается первый

   
 
 автор: margol   (24.05.2006 в 16:26)   письмо автору
 
   для: P@Sol   (24.05.2006 в 16:16)
 

Устроить проверку: меньше ли элемент вашей точки скачка, если да - записываем в результирующий. И так по очереди со всеми тремя массивами. А затем снова перебрать все массивы, но уже на предмет поиска в них элементов больших точки скачка и тоже их в результирующий.

   
 
 автор: Trianon   (24.05.2006 в 16:39)   письмо автору
 
   для: P@Sol   (24.05.2006 в 16:16)
 


$v = $a[0]; for($ia = 0; $ia < count($a); $ia++) { if($a[$ia] < $v) break; $d[] = $v=$a[$ia];}
$v = $b[0]; for($ib = 0; $ib < count($b); $ib++) { if($b[$ib] < $v) break; $d[] = $v=$b[$ib];}
$v = $c[0]; for($ic = 0; $ic < count($c); $ic++) { if($c[$ic] < $v) break; $d[] = $v=$c[$ic];}
for(; $ia < count($a); $ia++)  $d[] = $a[$ia]; 
for(; $ib < count($b); $ib++)  $d[] = $b[$ib]; 
for(; $ic < count($c); $ic++)  $d[] = $c[$ic]; 

Только, по-моему, проще сперва нормально собрать данные, чем потом восстанавливать их порядок.

   
 
 автор: P@Sol   (24.05.2006 в 16:44)   письмо автору
 
   для: Trianon   (24.05.2006 в 16:39)
 

мошешь собрать по другому? помоги...я намучался, но ничего другого не придумал

   
 
 автор: Trianon   (24.05.2006 в 16:51)   письмо автору
 
   для: P@Sol   (24.05.2006 в 16:44)
 

Так а где код, который заполняет A B и C?

   
 
 автор: P@Sol   (24.05.2006 в 16:53)   письмо автору
 
   для: Trianon   (24.05.2006 в 16:51)
 

мой код:

<?php

for ($u=0;$u<3;$u++)
{
     
spider("http://tutu.ru/station.php?nnst=79310&list=".$u);
}
               
function 
spider($uri){
$content=file_get_contents($url);     
$text=preg_replace('/(s+)|(&[a-zA-Z0-9#]+;)/'' 'strip_tags($content));
     
$links=split("href=",strip_tags($content,'<a>'));
//    print_r($links);
    
$pattern "|<a href=\"([^\"]+)\"[^>]*>(.*)</a>|isU";
  
preg_match_all($patternstrip_tags($content,'<a>'), $out);
  echo 
"<pre>";
  
print_r($out);
  echo 
"</pre>";}

   
 
 автор: Trianon   (24.05.2006 в 17:03)   письмо автору
 
   для: P@Sol   (24.05.2006 в 16:53)
 

Если это граббинг, то я пас.

   
 
 автор: P@Sol   (24.05.2006 в 17:05)   письмо автору
 
   для: Trianon   (24.05.2006 в 17:03)
 

было же сказано, что значения берутся с трех страниц:))

   
 
 автор: Trianon   (24.05.2006 в 17:07)   письмо автору
 
   для: P@Sol   (24.05.2006 в 17:05)
 

Так а чем не устраивает вариант выше? С шестью циклами?

   
 
 автор: P@Sol   (24.05.2006 в 17:11)   письмо автору
 
   для: Trianon   (24.05.2006 в 17:07)
 

я не говорил, что он меня не устраивает:)) просто если бы можно было сразу собрать правильно...были бы лучше, а так я взял эти шесть циклов, спасибо

   
 
 автор: CrazyAngel   (24.05.2006 в 15:53)   письмо автору
 
   для: P@Sol   (24.05.2006 в 15:40)
 

Помоему их надо соединить, потом отсортировать и все =)

   
 
 автор: P@Sol   (24.05.2006 в 16:02)   письмо автору
 
   для: CrazyAngel   (24.05.2006 в 15:53)
 

Тогда будет
Г = (10,11,20,21,30,31,40,41,50,51,60,61,70,71,80,81 и т.д.);

   
 
 автор: CrazyAngel   (24.05.2006 в 16:32)   письмо автору
 
   для: P@Sol   (24.05.2006 в 16:02)
 

=))) есть разные методы сортировки =)

   
 
 автор: P@Sol   (24.05.2006 в 16:33)   письмо автору
 
   для: CrazyAngel   (24.05.2006 в 16:32)
 

может что то я не знаю:))) подберите такой, который меня устроит;)

   
 
 автор: CrazyAngel   (24.05.2006 в 16:41)   письмо автору
 
   для: P@Sol   (24.05.2006 в 16:33)
 

Сорри, больше так не буду =))) неразобравшись советовать =)))


Еще раз Сорри

   
 
 автор: P@Sol   (24.05.2006 в 16:46)   письмо автору
 
   для: CrazyAngel   (24.05.2006 в 16:41)
 

:)))))))))))))

   
 
 автор: kasmanaft   (24.05.2006 в 16:03)   письмо автору
 
   для: P@Sol   (24.05.2006 в 15:40)
 

а я бы создал еще 2 массива: все до скачка засунул в первый, после скачка во второй... потом отсортировать и соединить :)
или больше массивов нельзя??

   
 
 автор: P@Sol   (24.05.2006 в 16:12)   письмо автору
 
   для: kasmanaft   (24.05.2006 в 16:03)
 

можно, даже через файлы или бд можно

   
 
 автор: P@Sol   (24.05.2006 в 16:43)   письмо автору
 
   для: P@Sol   (24.05.2006 в 15:40)
 

а если через файлы? как можно записать в середину файла?

   
Rambler's Top100
вверх

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