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]   

> Без описания
SAD
Отправлено: 06 Ноября, 2009 - 23:20:35
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




столкнулся с , вроде , простой проблемой.
есть двумерный массив вида

23 5353 3535 35 5 45
45 45 454 454 545
45 454 545 454 45
......
кол-во элементов равно в каждой строке.
я сравниваю каждый элемент каждой строки с каждым элементом другой строки.

вот в чем проблема, у меня допустим из 20 строк в трех строках есть число 67, я вывожу так результат совпадения

строка№1 строка№2 совпадающие числа

в моем случае должно вывести

строка№3 строка№12 67
строка№3 строка№13 67
строка№12 строка№13 67

а у меня не выводит
строка№3 строка№13 67

не знаю в чем прикол, может есть идеи?

я этот массив считываю с файла, может быть числа могли по разному там быть записаны?

(Отредактировано автором: 06 Ноября, 2009 - 23:41:37)

 
 Top
JROUD
Отправлено: 07 Ноября, 2009 - 01:27:16
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009  


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




Если бы вы хотя бы показали ваш код, а так только могу предложить моё решение для массива 20Х20
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($i1=0; $i1<20; $i1++)
  3. {
  4.         for ($j1=0; $j1<20; $j1++)
  5.         {
  6.                 for ($i2=0; $i2<20; $i2++)
  7.                 {
  8.                         for ($j2=0; $j2<20; $j2++)
  9.                         {
  10.                                 if ($i2==0 && $j2==0) continue;
  11.                                 elseif ($A[$i1][$j1]==$A[$i2][$j2])
  12.                                 {
  13.                                         echo ("Числа по адресам A($i1 ; $j1) и A($i2 ; $j2) совпадают и равны $A[$i2][$j2]");
  14.                                 }
  15.                         }
  16.                 }
  17.         }
  18. }
  19.  

(Отредактировано автором: 07 Ноября, 2009 - 01:38:00)

 
 Top
SAD
Отправлено: 07 Ноября, 2009 - 01:52:12
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




мой код

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.     //-- считывание с файла и создание многомерного массива
  4.     set_time_limit(900);
  5.     $src = fopen('keno.txt',"r");
  6.     while ( !feof($src) )
  7.       {
  8.         $mas[] = fgets($src,464564);  
  9.       }
  10.  
  11.     $raz=sizeof($mas);
  12.     for($i=0;$i<$raz;$i++)
  13.       {
  14.         $mas[$i]=explode(" ",$mas[$i]);
  15.       }
  16.      
  17.     fclose($src);
  18.  
  19.     $k=sizeof($mas[0]);
  20.  
  21.     //-- построение таблицы исходной
  22.  
  23.     echo '<table cellpadding=2 border=1 bordercolor=black cellspacing=0>';
  24.     for($i=$raz-20;$i<=$raz;$i++)
  25.       {
  26.         echo "<tr><td>$i</td>";  
  27.         for($j=4;$j<$k-1;$j++)
  28.           {
  29.             echo " <td><font color=black><b>".$mas[$i-1][$j]."</b></font></td> ";
  30.           }
  31.         echo '</tr>';
  32.       }
  33.     echo '</table>';
  34.  
  35. // метод и вывод результатов
  36.  
  37. for($i=$raz-21;$i<$raz-1;$i++)
  38.   {  
  39.     for($j=$i+1;$j<$raz;$j++)
  40.       {
  41.         $t=0;
  42.         for($kk=4;$kk<$k-1;$kk++)
  43.           {
  44.             for($p=4;$p<$k-1;$p++)
  45.               {
  46.                 if($mas[$i][$kk]==$mas[$j][$p])
  47.                   {
  48.                     $t++;
  49.                     break;
  50.                   }    
  51.               }  
  52.           }
  53.         if($t>2 AND $mas[$j][0]-$mas[$i][0]<5)
  54.           { ?><table border=1 cellspacing='0' cellpadding=3><tr>
  55.             <td bgcolor=yellow><? echo $i+1; ?></td>
  56.             <td bgcolor=pink><? echo $j+1; ?></td>
  57.             <td></td>
  58.             <td></td>
  59.             <?
  60.             for($kk=4;$kk<$k-1;$kk++)
  61.               {
  62.                 for($p=4;$p<$k-1;$p++)
  63.                   {
  64.                     if($mas[$i][$kk]==$mas[$j][$p])
  65.                       {
  66.                         if($mas[$i][$kk]>0 AND $mas[$i][$kk]<21)
  67.                           $mas[$i][$kk]="<font color=magenta>".$mas[$i][$kk]."</font>";
  68.                        
  69.                         if($mas[$i][$kk]>20 AND $mas[$i][$kk]<41)
  70.                           $mas[$i][$kk]="<font color=red>".$mas[$i][$kk]."</font>";
  71.                          
  72.                         if($mas[$i][$kk]>40 AND $mas[$i][$kk]<61)
  73.                           $mas[$i][$kk]="<font color=blue>".$mas[$i][$kk]."</font>";
  74.                        
  75.                         if($mas[$i][$kk]>60 AND $mas[$i][$kk]<81)
  76.                           $mas[$i][$kk]="<font color=lime>".$mas[$i][$kk]."</font>";
  77.                          
  78.                         echo "<td>".$mas[$i][$kk]."</td>";
  79.                        
  80.                       }
  81.                   }      
  82.               }
  83.             ?></tr></table><?
  84.           }
  85.       }
  86.   }
  87.  
  88. ?>

сам файл http://narod[dot]ru/disk/14840892000/keno[dot]txt

обратите на выведенную строку в таблице результатов 3129 3132, там должно быть число 67, и кстати число 9

(Отредактировано автором: 07 Ноября, 2009 - 01:58:27)

 
 Top
SAD
Отправлено: 07 Ноября, 2009 - 13:31:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




ну взгляньте плиз. в чем может быть бок?
 
 Top
Ch_chov
Отправлено: 07 Ноября, 2009 - 13:39:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




SAD, может лучше не делать «матрёшку» из вложенных циклов, а использовать in_array?
 
 Top
SAD
Отправлено: 07 Ноября, 2009 - 13:41:48
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




я же не ищу что то в массиве, а сравниваю элементы. или я что то не понял?
 
 Top
Ch_chov
Отправлено: 07 Ноября, 2009 - 13:49:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




Разве ты не ищешь совпадения элементов?
(Добавление)
array_search
 
 Top
SAD
Отправлено: 07 Ноября, 2009 - 13:55:30
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




а как прикрутить это дело? и так понимаю выведет те строки где есть номер определенный, а мне надо,чтобы выводило как у меня

(Отредактировано автором: 07 Ноября, 2009 - 14:13:02)

 
 Top
Ch_chov
Отправлено: 07 Ноября, 2009 - 14:56:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




PHP:
скопировать код в буфер обмена
  1. foreach($mas as $fk => $fv)
  2.   foreach ($mas as $sk => $sv)
  3.     if ($fk >= $sk) continue;
  4.     else echo 'стр. №',$fk,' и стр. №',$sk,' = ',implode(' ', array_intersect ($fv, $sv)),'<br/>';
 
 Top
SAD
Отправлено: 07 Ноября, 2009 - 15:12:20
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB