проблема возврата цикла foreach - PullRequest
4 голосов
/ 08 декабря 2010

Привет, я пишу функцию для поиска в массиве, но она не работает, когда цикл находит что-то, совпадающее с тем, что не возвращает истинные значения, проверяет до конца любую идею

function findinArray($find,$array){
    foreach($find as $key => $value){
        if (in_array($find,$array)) {
            return true;
        }else{
            return false;
    }       }
}
if(findinArray(array("a","b"),array("a")){
         echo "Match";
}

спасибо

Ответы [ 3 ]

14 голосов
/ 08 декабря 2010

Функция может возвращаться только один раз, поэтому ваша функция всегда будет возвращаться на первой итерации.Если вы хотите, чтобы он возвращал true при первом совпадении и false, если совпадение не найдено, попробуйте версию ниже.

function findinArray($find, $array) {
    foreach ($find as $value) {
        if (in_array($value, $array)) {
            return true;
        }
    }
    return false;
}

if (findinArray(array("a","b"), array("a")) {
    echo "Match";
}

(Вы также допустили ошибки в использовании значений в foreach,и вы забыли })

5 голосов
/ 08 декабря 2010

Должно быть in_array($value, $array).Но вы могли бы просто сделать count(array_intersect()).

1 голос
/ 08 декабря 2010

вы передаете первый аргумент массив в in_array() это должно быть значение, измените его на

function findinArray($find,$array){
    foreach($find as $key => $value){
        if (in_array($value,$array)) {
            return true;
        }
        return false;
    }      
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...