Реклама на сайте Advertise with us

Подскажите по коду.

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/08/13 в 13:12       Ответить с цитатойцитата 

Код: [развернуть]


содержание data.txt
Код: [развернуть]


если все верно т.е. $arrStr[0] == $search истина, то выводится не только содержание массива, но и много раз сверху и снизу отображаемого массива слово 'error'
хотя по логике оно должно выводиться только если фальш.
При фальше же выводится сново несколько раз 'error', но уже одной строкой.

Х.з. почему так происходит.

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 06/08/13 в 13:31       Ответить с цитатойцитата 

Lexikon писал:
но и много раз сверху и снизу отображаемого массива слово 'error'

Много это сколько? Если столько же сколько строчек без 'yana' в data.txt, то всё правильно - как написано, так и работает. Чего ты ожидал?

3
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/08/13 в 13:38       Ответить с цитатойцитата 

Получается идет по всему файлу
читает строку, заносит ее в массив, если нулевое значение не содержит того что я ищу отображается 'error' если находит то что ищу, вывод массив и двигается дальше.

хмм icon_smile.gif
вон оно что, чет я сразу не сообразил.
Нужно тгда как то по другому.
Попробую переделать.

0
 



С нами с 08.08.08
Сообщения: 145
Рейтинг: 91

Ссылка на сообщениеДобавлено: 06/08/13 в 13:39       Ответить с цитатойцитата 

Lexikon писал:
... но и много раз сверху и снизу отображаемого массива слово 'error'

Ну судя по коду, оно будет выводиться каждый раз, когда в строке не найдено "yana".

8
 



С нами с 08.08.08
Сообщения: 145
Рейтинг: 91

Ссылка на сообщениеДобавлено: 06/08/13 в 13:42       Ответить с цитатойцитата 

Lexikon писал:
Нужно тгда как то по другому.
Попробую переделать.

Если ты поиск делаешь, то тебе не нужны эти error вовсе. Просто флаг выставляй, скажем $found=1 если найдено что-то. Если нет, будет значение по умолчанию $found=0 заданное до цикла поиска. В самом конце проверяй флаг, если !=1 пиши error тогда уже.

8
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/08/13 в 13:57       Ответить с цитатойцитата 

О! спасибо за идею. то что нужно, прошло!!! smail54.gif

вот так сделал

Код: [развернуть]


я решил вставить еще break; чтоб не перебирать всё остальное когда уже найдено то что нужно.

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 06/08/13 в 14:43       Ответить с цитатойцитата 

Lexikon: а почему не используешь http://php.net/array_search ?
там же есть функция интересная:
Код:
<?php
function array_search_i($str,$array){
     foreach($array as $key => $value) {
         if(stristr($str,$value)) return $key;
     }
     return false;
}
?>

8
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/08/13 в 15:49       Ответить с цитатойцитата 

я с нее начал, но было безрезультатно ибо он искал строго то что я задавал, а у меня строка
anna|text1.1|text1.2|text1.3
при поиске anna не отображалась, вернее ключь этой строки, вот я и обошел это. Сейчас гляну.
Правда незнаю, ускорит ли это работу, или снизит нагрузку. Если особой разницы нет, можно ведь и оставить.

А так, Спасибо!

0
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 06/08/13 в 15:54       Ответить с цитатойцитата 

неа, ничего.
Я так понял эта функция тот же array_search, только тут циклом и без регистра.

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 06/08/13 в 18:53       Ответить с цитатойцитата 

ну да, для твоего случая надо чуток поработать над функцией, например такой вариант:
Код:

function array_search_i($str, $array){
      foreach($array as $key => $value) {
            $value_list = explode('|',$value);
            if(stristr($str, $value_list[0])) return $key;
      }
      return false;
}

8
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 06/08/13 в 19:03       Ответить с цитатойцитата 

Зачем explode?

Код:
if(0 === stristr($str, $value)) return $key;

Или я туплю опять? icon_smile.gif

3
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 06/08/13 в 19:21       Ответить с цитатойцитата 

Yacc писал:
Зачем explode?

Код:
if(0 === stristr($str, $value)) return $key;

Или я туплю опять? icon_smile.gif


ага, действительно так тоже можно, туплю чота trollface.png

8
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 06/08/13 в 19:31       Ответить с цитатойцитата 

Yacc писал:
Зачем explode?

Код:
if(0 === stristr($str, $value)) return $key;

Или я туплю опять? icon_smile.gif
тогда может лучше stristr($str.'|', $value), а то будет находить y, ya, yan и т.д. хотя, если нужен поиск по первым буквам...

8
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »