вопрос по массиву и поиску ключевых слов

Тема в разделе "Как сделать...", создана пользователем sarkis, 19 окт 2014.

  1. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36
    здравствуйте ...Сделал след.код :
    сам массив -
    Код:
    $cats = array (
    "abissin"=> array("a" => "абиссин", "b" => "Абиссинская"),
    "aziat"=> array("a" => "азиат", "b" => "Азиатская"),
    "american"=> array("a" => "америка", "b" => "Американская"),
    "bobteil"=> array("a" => "бобт", "b" => "Бобтейл"),
    "angora"=> array("a" => "ангор", "b" => "Ангорская"),
    "ashera"=> array("a" => "ашер", "b" => "Ашера"),
    "baliskaya"=> array("a" => "балий", "b" => "Балийская"),
    "soukok"=> array("a" => "соук", "b" => "Соукок"),
    "bengal"=> array("a" => "бенгал", "b" => "Бенгальская"),
    "birm"=> array("a" => "бирм", "b" => "Бирманская"),
    "tai"=> array("a" => "тай", "b" => "Тайская"),
    "bombeyska"=> array("a" => "бомб", "b" => "Бомбейская"),
    "brazil"=> array("a" => "бразил", "b" => "Бразильская"),
    "toyger"=> array("a" => "тойг", "b" => "Тойгер"),
    "kerl"=> array("a" => "керл", "b" => "Кёрл"),
    "britan"=> array("a" => "британ", "b" => "Британская"),
    "burmilla"=> array("a" => "бурм", "b" => "Бурмилла"),
    "Burmanska"=> array("a" => "бурма", "b" => "Бурманская"),
    "Gavanna"=> array("a" => "гаван", "b" => "Гавана браун"), 
    "Tonkinskaya"=> array("a" => "тонкин", "b" => "Тонкинская"),
    "Reks"=> array("a" => "рекс", "b" => "Рекс"),
    "gimalay"=> array("a" => "гимал", "b" => "Гималайская"),     
    "sfinks"=> array("a" => "сфин", "b" => "Сфинкс"),
    "keltsk"=> array("a" => "кельт", "b" => "Кельтская"),
    "mist"=> array("a" => "мист", "b" => "Мист"),
    "ussury"=> array("a" => "уссур", "b" => "Уссури"), 
    "egipetsk_mau"=> array("a" => "египе", "b" => "Египетская мау"),
    "york"=> array("a" => "йорк", "b" => "Йоркская"),
    "shartrez"=> array("a" => "шарт", "b" => "Шартрез"),
    "ceylon"=> array("a" => "цейлон", "b" => "Цейлонская"),
    "ekzot"=> array("a" => "экзот", "b" => "Экзотическая"),
    "yavanez"=> array("a" => "яван", "b" => "Яванез"),
    "kalifor"=> array("a" => "калифор", "b" => "Калифорнийская"),
    "kanani"=> array("a" => "канаа", "b" => "Канаани"),
    "kimrik"=> array("a" => "кимр", "b" => "Кимрик"),
    "li_hua"=> array("a" => "хуа", "b" => "Ли Хуа"),
    "korat"=> array("a" => "корат", "b" => "Корат"),
    "la_perm"=> array("a" => "перм", "b" => "Ла перм"),
    "mandalay"=> array("a" => "мандал", "b" => "Мандалай"),
    "manks"=> array("a" => "манк", "b" => "Манкс"),
    "main_kun"=> array("a" => "мейн", "b" => "Мейн-Кун"),
    "nibelung"=> array("a" => "нибел", "b" => "Нибелунг"),
    "norvegh"=> array("a" => "норвеж", "b" => "Норвежская"),
    "orient"=> array("a" => "ориент", "b" => "Ориентальная"),
    "ociket"=> array("a" => "оцик", "b" => "Оцикет"),
    "ohos_azules"=> array("a" => "охос", "b" => "Охос Азулес"),
    "pers"=> array("a" => "перс", "b" => "Персидская"),
    "peterbold"=> array("a" => "петер", "b" => "Петерболд"),
    "piksibob"=> array("a" => "пикси", "b" => "пиксибоб"),
    "ragamafin"=> array("a" => "рагам", "b" => "Рагамаффин"),
    "golubaya"=> array("a" => "голуб", "b" => "Русская голубая"),
    "regdoll"=> array("a" => "регд", "b" => "Регдолл"),
    "Savanna"=> array("a" => "саван", "b" => "Саванна"),
    "siam"=> array("a" => "сиам", "b" => "Сиамская"),
    "sibir"=> array("a" => "сибир", "b" => "Сибирская"),
    "singapura"=> array("a" => "синг", "b" => "Сингапура"),
    "skottish"=> array("a" => "скот", "b" => "Скоттиш"),
    "snow_shu"=> array("a" => "сноу", "b" => "Сноу-шу")
    
    );
    основной текст , в котором ищутся ключевые слова :
    Код:
    $text='Сегодня продаю  кельтского  и персидского  кота  и Сибирская кошка со  всеми документами, прививками и хорошим характером.';
    
    и сам поиск
    Код:
    foreach($cats as $poroda) 
            {
     
             
                                $result = strpos(mb_strtolower($text), $poroda['a']);
                                if($result==true){
                                    echo"найдено Ключевое слово <b>$poroda[a]</b> ,которые соответсвуют категории <b>$poroda[b]</b><br>";
                                    break;
                                }
                                else{  echo "ничего не найдено";break;}
                         
            }    

    по результатам поиска , должно выводить первое совпавшее ключевое слово.. Если убрать строку с else, то все хорошо ..Но как только я ее поставил, то сразу выводит только ее результат ..Подскажите , в чем может быть неточность ?
     
  2. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    из под else {} уберите break;
    Break - выход из цикла. Если код более сложный, то вместо break напишите continue;
     
  3. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36
    смотрите , если даже я уберу везде break; то потом выводится одновременно текст при $result==true и else
     
  4. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36
    скрин результата
     

    Вложения:

    • вывыв.PNG
      вывыв.PNG
      Размер файла:
      52,6 КБ
      Просмотров:
      3
  5. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    628
    Симпатии:
    1.388
    PHP:
    foreach($cats as $poroda
            {
                                          if(
    strpos(mb_strtolower($text), $poroda['a'])){
                                    echo
    "найдено Ключевое слово <b>$poroda[a]</b> ,которые соответсвуют категории <b>$poroda[b]</b><br>";
                                    break;
                                }
                                else{  echo 
    "ничего не найдено";break;}
            } 
     
  6. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36

    так тоже пробовал ..В результате выводить значениe else{ echo "ничего не найдено";break;}
     
  7. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    628
    Симпатии:
    1.388
    Не понял сути задачи сразу...

    PHP:
    foreach($cats as $poroda
            {
                                          if(
    strpos(mb_strtolower($text), $poroda['a'])){
                                    echo
    "найдено Ключевое слово <b>$poroda[a]</b> ,которые соответсвуют категории <b>$poroda[b]</b><br>";
                                    break;
                                }
            } 
    echo 
    "ничего не найдено";
     
    Darkness нравится это.
  8. sarkis

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36
    тоже неверно ...
    тут как должно быть : если true при поиске , то выводит текст , если false,то "ничего не найдено"
     
  9. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    628
    Симпатии:
    1.388
    оно тебе так и выведет
     
  10. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Тогда вот так.
    PHP:
    txt "ничего не найдено";
    foreach(
    $cats as $poroda)
            {
                                          if(
    strpos(mb_strtolower($text), $poroda['a'])){
                                   $ 
    txt "найдено Ключевое слово <b>$poroda[a]</b> ,которые соответсвуют категории <b>$poroda[b]</b><br>";
                                    break;
                                }
            }
    echo 
    $txt;
     
    Darkness нравится это.