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]   

> Без описания
annihilus
Отправлено: 03 Февраля, 2011 - 22:59:11
Post Id



Гость


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


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




Имеется массив с числами.

При проходе по массиву нужно проверять каждую цифру и цифру которая следует за ней по определенным правилам.

2 правила:
1. След цифра не может быть, например:
за каждой цифрой от 1 до 9 не может быть такая же цифра , а так же цифры 15-20;
2. След цифра может быть, например:
за каждой из цифр 15-20 может быть только 10-14 а так же цифра 22;

Таких видов может быть довольно много , но все они подчиняются этим 2м правилам.

Вариант со вложенными переключателями(switch) либо if-else , я знаю , но код получается на 300-400 строк...
Так же вариант , предварительно создать массивы с цифрами которые могут идти след. и не могут и проверять с помощью in_array();

Интересуют варианты отличные от этих)
 
 Top
OrmaJever Модератор
Отправлено: 03 Февраля, 2011 - 23:39:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Загнать масив в цыкл, посколько php не умеет видеть будущее то работать будем с этим значение и преведущим (а не следуйщим). И переписывая в новый масив проверять эти 2 условия, если проходят то заисывать в новый масив если нет то ити на следуйщий цыкл.

(Отредактировано автором: 03 Февраля, 2011 - 23:39:43)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
annihilus
Отправлено: 03 Февраля, 2011 - 23:46:35
Post Id



Гость


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


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




OrmaJever пишет:
посколько php не умеет видеть будущее

php не умеет , но его можно научить ($массив[$n+1]) в цикле.

OrmaJever пишет:
И переписывая в новый масив проверять эти 2 условия, если проходят то заисывать в новый масив если нет то ити на следуйщий цыкл.


Про такой вариант я вкурсе , нужны еще варианты)

(Отредактировано автором: 04 Февраля, 2011 - 00:02:59)

 
 Top
movEAX
Отправлено: 04 Февраля, 2011 - 05:29:09
Post Id



Частый посетитель


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


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




annihilus пишет:
in_array();

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


-----
армия.. самое убогое место
 
 Top
annihilus
Отправлено: 04 Февраля, 2011 - 11:11:36
Post Id



Гость


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


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




movEAX пишет:
Это будет слишком медленно, проще условия прописать.

Да, я в курсе...
 
 Top
LEONeso
Отправлено: 05 Февраля, 2011 - 00:03:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




annihilus, Что-то типа?
PHP:
скопировать код в буфер обмена
  1.  
  2. /*массив, для сравнения ключей и их значений*/
  3. $array=array('5','2','7','8','4','7','3','20','18','752','9','8','1','0','77','49','31','18');
  4.  
  5.           /*с учетом количества элементов массива*/
  6.       for ($i = 0; $i <= count($array) && $i != $array[$i]; $i++) {//выводи, пока ключ и её значение не пересекутся
  7.           echo $array[$i].', ';
  8.       }
  9.  
  10.           /*указываем точное кол-во циклов до отказа*/
  11.       for ($i = 10; $i <= 15 && $i != $array[$i]; $i++) {
  12.           echo $array[$i].', ';
  13.       }


результат:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 5, 2, 7, 8, 9, 8, 1, 0, 77, 49,

(Отредактировано автором: 05 Февраля, 2011 - 00:27:57)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
annihilus
Отправлено: 05 Февраля, 2011 - 00:35:45
Post Id



Гость


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


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




LEONeso, вроде не похоже на то что надо..)
 
 Top
LEONeso
Отправлено: 05 Февраля, 2011 - 00:59:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




annihilus, у меня такой бред пошел Радость
PHP:
скопировать код в буфер обмена
  1. $array=array('5','2','7','8','4','7','3','20','18','752','9','8','1','0','77','49','31','18');
  2. $array_s=array('7','11','12','13','14','15');
  3. foreach($array_s as $key) {
  4.       for ($i = 0; $i <= count($array) && $i != $array[$i] && $array[$i] != $array_s[$key] && $array[$i] != $key; $i++) {
  5.           echo $array[$i].', ';
  6.       }
  7. }


результат:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 5, 2, 5, 2, 7, 8, 5, 2, 7, 8, 5, 2, 7, 8, 5, 2, 7, 8, 5, 2, 7, 8,



array_flip() - можно еще менять значения ключей и сами ключи местами.
array_unique() - убирает дубли из массива.
обе функции взяты с поста

--
Понял, что я бы с такой задачей не справился или пробовал до полного отказа от реализации её.

(Отредактировано автором: 05 Февраля, 2011 - 01:10:22)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
annihilus
Отправлено: 05 Февраля, 2011 - 01:20:46
Post Id



Гость


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


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




LEONeso пишет:
PHP:
скопировать код в буфер обмена
  1. $array=array('5','2','7','8','4','7','3','20','18','752','9','8','1','0','77','49','31','18');
  2. $array_s=array('7','11','12','13','14','15');
  3. foreach($array_s as $key) {
  4.       for ($i = 0; $i <= count($array) && $i != $array[$i] && $array[$i] != $array_s[$key] && $array[$i] != $key; $i++) {
  5.           echo $array[$i].', ';
  6.       }
  7. }

А что вообще делает данный код?) Я чето суть не могу уловить...)))))
 
 Top
LEONeso
Отправлено: 05 Февраля, 2011 - 11:00:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


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




annihilus, делает проверку данных массива $array.

Проверяет, чтоб не было соответствий среди ключей массива и их значений, и соотвествий среди массива $array_s и его ключей Ха-ха ... если условие не выполняется, происходит прерывание цикла for, но не foreach - цикл работает, проверяя значения массива $array с значениями массива $array_s и далее первые строки объяснения (выше-выше) Не понял

Иногда, я сам себя путаю Шокирован

(Отредактировано автором: 05 Февраля, 2011 - 11:00:39)



-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
JustUserR
Отправлено: 06 Февраля, 2011 - 16:44:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




annihilus Использование языка PHP предполагает возможность осуществления перевода информацилонных полей в увроянях трактования рассичтываемых данных и элементах исполняемого потока кода - таким образом для осуществления решения предполагаемой задачи допустимо произвести создание генератора целевого PHP-кода основанного на программном описании системы проверки информационных полей и обеспечении ее дальнейшего представления в виде элементоа исполняемого потока кода


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 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