За последние 24 часа нас посетили 17813 программистов и 1655 роботов. Сейчас ищут 1128 программистов ...

Поиск в массиве

Тема в разделе "PHP для новичков", создана пользователем knopkin, 17 янв 2009.

  1. knopkin

    knopkin Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    9
    Симпатии:
    0
    Есть массив слов, в нем встречаются ключ "casino"

    casino2
    casinogrand
    gcasinocar
    casno
    Хочу получить список где встречается этот ключ.

    С помощью чего можно это сделать?
    array_search ищит только равных по значанию слова.

    если можно, краткий пример, спасибо...
     
  2. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. $list = array();
    2.  
    3. foreach ($k => $v){
    4.     if (strpos($k, 'casino') !== false)
    5.         $list[$k] = $v;
    6. }
    7.  
    8. print_r($list);
    upd strpos($k, 'casino') лучше заменить на strtolower(strpos($k, 'casino'))
     
  3. knopkin

    knopkin Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    9
    Симпатии:
    0
    Ошибка?

    Сработало вот так
    Код (Text):
    1. $list = array("casino", "casinos", "2casino", "debcasin", "casino33");
    2.  
    3. foreach ($list as $k => $v) {
    4.     if (strtolower(strpos($k, 'casino')) !== false) {
    5.         $list[$k] = $v;                              }
    6. }
    7.  
    8. print_r($list);
    но при этом ответ
    Код (Text):
    1. Array ( [0] => casino [1] => casinos [2] => 2casino [3] => debcasin [4] => casino33 )
    это ни есть тру, т.к в предпоследнем слове нет "casino"
     
  4. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    1. $list это пустой массив, который потом будет наполнятся по ходу поиска!

    2. array("casino", "casinos", etc) к "встречаются ключ "casino"" никакого отношения не имеет. Учи матчасть:
    Код (Text):
    1. array(ключ => значение)
    http://ru.php.net/manual/en/language.types.array.php

    Код (Text):
    1. $source = array("casino", "casinos", "2casino", "debcasin", "casino33");
    2. $list = array();
    3.  
    4. foreach ($source as $v) {
    5.     if (strtolower(strpos($v, 'casino')) !== false) {
    6.         $list[$k] = $v;                              
    7.     }
    8. }
    9.  
    10. print_r($list);
     
  5. knopkin

    knopkin Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    9
    Симпатии:
    0
    понял, спасибо.

    Но почему как итог результатат нет?
    Код (Text):
    1. Array ( [] => casino33 )
    т.е он не наполняется...

    тут как будто цикла для $k не хватает
     
  6. knopkin

    knopkin Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    9
    Симпатии:
    0
    Код (Text):
    1. $source = array("casino", "casinos", "2casino", "debcasin", "casino33");
    2. $list = array();
    3. $k=0;
    4.  
    5. foreach ($source as $v) {
    6.     if (strtolower(strpos($v, 'casino')) !== false) {
    7.         $list[$k] = $v;                              
    8.     $k=$k+1;
    9.     }
    10. }
    11.  
    12. print_r($list);
    Если так, то ответ
    Код (Text):
    1. Array ( [0] => casino [1] => casinos [2] => 2casino [3] => debcasin [4] => casino33 )
    [3] тут явло лишний
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?php
    2. function getArrayFromArrayByKey ($array,$key) {
    3.     $result=array();
    4.     foreach ($array as $value) {
    5.         if (substr_count(strtolower($value),strtolower($key))) {
    6.             $result[]=$value;
    7.         }
    8.     }
    9.     return !empty($result)?$result:false;
    10. }
    11. $source=array("casino", "casinos", "2casino", "debcasin", "casino33");
    12. $list=getArrayFromArrayByKey($source,'casino');
    13. print_r($list);
    14. ?>
     
  8. knopkin

    knopkin Активный пользователь

    С нами с:
    17 янв 2009
    Сообщения:
    9
    Симпатии:
    0
    спасибо огромное!